glsl: when debug pragma is on, emit comments about function calls/inlines
authorBrian Paul <brianp@vmware.com>
Thu, 19 Mar 2009 15:26:20 +0000 (09:26 -0600)
committerBrian Paul <brianp@vmware.com>
Thu, 19 Mar 2009 15:26:20 +0000 (09:26 -0600)
BTW, the debug pragma syntax is "#pragma debug(on)"

src/mesa/shader/slang/slang_codegen.c
src/mesa/shader/slang/slang_emit.c
src/mesa/shader/slang/slang_ir.h

index 6c8c8c18563e8190b58475bbfe42cd44cef22583..13a801c18a2ea687cccc0c74edf79a5c95dcfe7d 100644 (file)
@@ -1439,6 +1439,12 @@ _slang_gen_function_call(slang_assemble_ctx *A, slang_function *fun,
    /*_slang_label_delete(A->curFuncEndLabel);*/
    A->curFuncEndLabel = prevFuncEndLabel;
 
+   if (A->pragmas->Debug) {
+      char s[1000];
+      snprintf(s, sizeof(s), "Call/inline %s()", (char *) fun->header.a_name);
+      n->Comment = _slang_strdup(s);
+   }
+
    return n;
 }
 
index 94d0c084aaf82930cb382ec3673c25c02541f9bc..1b1edb44609673ee3e355acf2ba441427f50aaf6 100644 (file)
@@ -2194,6 +2194,12 @@ emit(slang_emit_info *emitInfo, slang_ir_node *n)
       return NULL;
    }
 
+   if (n->Comment) {
+      inst = new_instruction(emitInfo, OPCODE_NOP);
+      inst->Comment = _mesa_strdup(n->Comment);
+      inst = NULL;
+   }
+
    switch (n->Opcode) {
    case IR_SEQ:
       /* sequence of two sub-trees */
index 0ec38b10a5a90c75c7442f8768d081ac747123f0..e796693ed58a67fcd2769c3b3b1c49a466cb24db 100644 (file)
@@ -212,6 +212,7 @@ typedef struct slang_ir_node_
    struct slang_ir_node_ *List;  /**< For various linked lists */
    struct slang_ir_node_ *Parent;  /**< Pointer to logical parent (ie. loop) */
    slang_label *Label;  /**< Used for branches */
+   const char *Comment; /**< If Opcode == IR_COMMENT */
 } slang_ir_node;