https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107595

Richard Biener <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
   Target Milestone|---                         |13.0

--- Comment #4 from Richard Biener <rguenth at gcc dot gnu.org> ---
It ICEs because 'cfun' is NULL and x86 has

#define ACCUMULATE_OUTGOING_ARGS \
  ((TARGET_ACCUMULATE_OUTGOING_ARGS \
    && optimize_function_for_speed_p (cfun)) \
   || (cfun->machine->func_type != TYPE_NORMAL \
       && crtl->stack_realign_needed) \
   || TARGET_STACK_PROBE \
   || TARGET_64BIT_MS_ABI \
   || (TARGET_MACHO && crtl->profile))

we are assembling a static variable with an initializer containing a call
(that's not a valid initializer).

 <var_decl 0x7ffff6523c60 x
    type <record_type 0x7ffff6711b28 t TI
        size <integer_cst 0x7ffff6517c90 constant 128>
        unit-size <integer_cst 0x7ffff6517ca8 constant 16>
        align:64 warn_if_not_align:0 symtab:0 alias-set 9 canonical-type
0x7ffff6711b28
        fields <field_decl 0x7ffff67131c8 a type <integer_type 0x7ffff65325e8
integer(kind=4)>
            SI t.f90:3:18
            size <integer_cst 0x7ffff6517e88 constant 32>
            unit-size <integer_cst 0x7ffff6517ea0 constant 4>
            align:32 warn_if_not_align:0 offset_align 128 decl_not_flexarray: 0
            offset <integer_cst 0x7ffff6517c78 constant 0>
            bit-offset <integer_cst 0x7ffff6517cc0 constant 0> context
<record_type 0x7ffff6711b28 t> chain <field_decl 0x7ffff6713260 b>>
        chain <type_decl 0x7ffff67132f8 D.4263>>
    asm_written used static TI t.f90:6:12 size <integer_cst 0x7ffff6517c90 128>
unit-size <integer_cst 0x7ffff6517ca8 16>
    align:128 warn_if_not_align:0 context <function_decl 0x7ffff6712d00 p>
initial <constructor 0x7ffff6700a20>
    (mem/c:TI (symbol_ref:DI ("x.1") [flags 0x2] <var_decl 0x7ffff6523c60 x>)
[9 x+0 S16 A128])>

The initializer is

{.a=4, .b=null ()}

the frontend would need to lower such initializers to runtime initialization
(or not use static storage).

Reply via email to