https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90840
Bug ID: 90840 Summary: [8/9/10 Regression] ICE in simplify_subreg, at simplify-rtx.c:6441 Product: gcc Version: 10.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c Assignee: unassigned at gcc dot gnu.org Reporter: gs...@t-online.de Target Milestone: --- With -m32, affects versions down to gcc-4.7, gcc-4.6 compiles ok : $ cat z1.c struct S { long long a; int b; }; struct S f (void); void g (void) { _Complex long double c; *(struct S *) &c = f(); } $ gcc-10-20190609 -c z1.c -O2 $ $ gcc-10-20190609 -c z1.c -O2 -m32 during RTL pass: expand z1.c: In function 'g': z1.c:9:22: internal compiler error: in simplify_subreg, at simplify-rtx.c:6441 9 | *(struct S *) &c = f(); | ^~~ 0xa66260 simplify_subreg(machine_mode, rtx_def*, machine_mode, poly_int<1u, unsigned long>) ../../gcc/simplify-rtx.c:6441 0xa69da8 simplify_gen_subreg(machine_mode, rtx_def*, machine_mode, poly_int<1u, unsigned long>) ../../gcc/simplify-rtx.c:6711 0xa3142c gen_lowpart_general(machine_mode, rtx_def*) ../../gcc/rtlhooks.c:48 0x7b5d67 store_bit_field_1 ../../gcc/expmed.c:842 0x7b6756 store_bit_field(rtx_def*, poly_int<1u, unsigned long>, poly_int<1u, unsigned long>, poly_int<1u, unsigned long>, poly_int<1u, unsigned long>, machine_mode, rtx_def*, bool) ../../gcc/expmed.c:1154 0x7d1ea4 store_field ../../gcc/expr.c:7128 0x7cf9ec expand_assignment(tree_node*, tree_node*, bool) ../../gcc/expr.c:5195 0x6cd280 expand_call_stmt ../../gcc/cfgexpand.c:2722 0x6cd280 expand_gimple_stmt_1 ../../gcc/cfgexpand.c:3704 0x6cd280 expand_gimple_stmt ../../gcc/cfgexpand.c:3863 0x6d2137 expand_gimple_basic_block ../../gcc/cfgexpand.c:5899 0x6d47d6 execute ../../gcc/cfgexpand.c:6522