diff options
Diffstat (limited to 'gcc/c-common.c')
-rw-r--r-- | gcc/c-common.c | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/gcc/c-common.c b/gcc/c-common.c index a7d005b..f5fc0d3 100644 --- a/gcc/c-common.c +++ b/gcc/c-common.c @@ -3432,6 +3432,15 @@ c_expand_expr (exp, target, tmode, modifier) } break; + case COMPOUND_LITERAL_EXPR: + { + /* Initialize the anonymous variable declared in the compound + literal, then return the variable. */ + tree decl = COMPOUND_LITERAL_EXPR_DECL (exp); + emit_local_var (decl); + return expand_expr (decl, target, tmode, modifier); + } + default: abort (); } @@ -3482,6 +3491,18 @@ c_unsafe_for_reeval (exp) return -1; } +/* Hook used by staticp to handle language-specific tree codes. */ + +int +c_staticp (exp) + tree exp; +{ + if (TREE_CODE (exp) == COMPOUND_LITERAL_EXPR + && TREE_STATIC (COMPOUND_LITERAL_EXPR_DECL (exp))) + return 1; + return 0; +} + /* Tree code classes. */ #define DEFTREECODE(SYM, NAME, TYPE, LENGTH) TYPE, |