diff options
Diffstat (limited to 'gcc/varasm.c')
-rw-r--r-- | gcc/varasm.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/gcc/varasm.c b/gcc/varasm.c index f00b596..72ec1a2 100644 --- a/gcc/varasm.c +++ b/gcc/varasm.c @@ -4277,6 +4277,7 @@ initializer_constant_valid_p (value, endtype) return null_pointer_node; case ADDR_EXPR: + case FDESC_EXPR: return staticp (TREE_OPERAND (value, 0)) ? TREE_OPERAND (value, 0) : 0; case NON_LVALUE_EXPR: @@ -4469,6 +4470,18 @@ output_constant (exp, size, align) return; } + if (TREE_CODE (exp) == FDESC_EXPR) + { + HOST_WIDE_INT part = tree_low_cst (TREE_OPERAND (exp, 1), 0); + tree decl = TREE_OPERAND (exp, 0); +#ifdef ASM_OUTPUT_FDESC + ASM_OUTPUT_FDESC (asm_out_file, decl, part); +#else + abort (); +#endif + return; + } + switch (code) { case CHAR_TYPE: |