more cases where we have to count declarations
authorMatthias Braun <matze@braunis.de>
Wed, 5 Dec 2007 17:09:15 +0000 (17:09 +0000)
committerMatthias Braun <matze@braunis.de>
Wed, 5 Dec 2007 17:09:15 +0000 (17:09 +0000)
[r18613]

ast2firm.c

index 9ac4b0f..23bb4ca 100644 (file)
@@ -3088,6 +3088,8 @@ static void statement_to_firm(statement_t *statement)
        panic("Statement not implemented\n");
 }
 
+static int count_decls_in_expression(const expression_t *expression);
+
 static int count_local_declarations(const declaration_t *      decl,
                                     const declaration_t *const end)
 {
@@ -3104,6 +3106,11 @@ static int count_local_declarations(const declaration_t *      decl,
 
                        default: break;
                }
+               const initializer_t *initializer = decl->init.initializer;
+               /* FIXME: should walk initializer hierarchies... */
+               if(initializer != NULL && initializer->type == INITIALIZER_VALUE) {
+                       count += count_decls_in_expression(initializer->value.value);
+               }
        }
        return count;
 }