r300/compiler: Silence uninitialized variable warning.
authorVinson Lee <vlee@vmware.com>
Wed, 25 Aug 2010 06:04:20 +0000 (23:04 -0700)
committerVinson Lee <vlee@vmware.com>
Wed, 25 Aug 2010 06:04:20 +0000 (23:04 -0700)
The variable loops would be used uninitialized if it ever processed a
RC_OPCODE_ENDLOOP case first.

This patch initalizes the loops variable to NULL and adds an assert at
the RC_OPCODE_ENDLOOP case that loops isn't NULL.

Silence the following GCC warning.
r3xx_vertprog.c: In function 'translate_vertex_program':
r3xx_vertprog.c:469: warning: 'loops' may be used uninitialized in this function

src/mesa/drivers/dri/r300/compiler/r3xx_vertprog.c

index 997c0912d7da7ffd4a8a310da38f05f8cb463939..5086d76d4dd0f7ed0710658e9de934b6c86b525c 100644 (file)
@@ -466,7 +466,7 @@ static void translate_vertex_program(struct r300_vertex_program_compiler * compi
 {
        struct rc_instruction *rci;
 
-       struct loop * loops;
+       struct loop * loops = NULL;
        int current_loop_depth = 0;
        int loops_reserved = 0;
 
@@ -559,10 +559,16 @@ static void translate_vertex_program(struct r300_vertex_program_compiler * compi
                }
                case RC_OPCODE_ENDLOOP:
                {
-                       struct loop * l = &loops[current_loop_depth - 1];
-                       unsigned int act_addr = l->BgnLoop - 1;
-                       unsigned int last_addr = (compiler->code->length / 4) - 1;
-                       unsigned int ret_addr = l->BgnLoop;
+                       struct loop * l;
+                       unsigned int act_addr;
+                       unsigned int last_addr;
+                       unsigned int ret_addr;
+
+                       assert(loops);
+                       l = &loops[current_loop_depth - 1];
+                       act_addr = l->BgnLoop - 1;
+                       last_addr = (compiler->code->length / 4) - 1;
+                       ret_addr = l->BgnLoop;
 
                        if (loops_reserved >= R300_VS_MAX_FC_OPS) {
                                rc_error(&compiler->Base,