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

Reply via email to