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

            Bug ID: 61391
           Summary: [4.10 Regression] ICE in execute_one_pass at -O3 and
                    above
           Product: gcc
           Version: 4.10.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: other
          Assignee: unassigned at gcc dot gnu.org
          Reporter: asolokha at gmx dot com

At least 4.10.0-alpha20140525 and newer ICEs when compiling the following code
at -O3 or -Ofast:

short int u;
int h;
int i;

void
p(void)
{
  int c[2] = { 0 };
  for (h = 0; h < 2; ++h) {
    static int *l = &h;
    int t;
    int n;
    for (t = 0; t < 7; ++t)
      c[0] = (i & -(short int)(c[h+1] || (u = -(n != *l))) || c[h+1]);
  }
}

f55ba4cd.c: In function 'p':
f55ba4cd.c:6:1: internal compiler error: Segmentation fault
 p(void)
 ^

Unfortunately I cannot provide a meaningful stack trace because stack seems to
be corrupted. The last active frame seems to be of execute_one_pass(opt_pass*),
and "gdb disassemble" gives the following on x86_64:

<snipped>
   0x00000000008047b7 <+677>:    xor    %eax,%eax
   0x00000000008047b9 <+679>:    jmpq   0x804630
<_Z16execute_one_passP8opt_pass+286>
   0x00000000008047be <+684>:    mov    0x0(%rbp),%rax
   0x00000000008047c2 <+688>:    mov    0xb12b4f(%rip),%rsi        # 0x1317318
<cfun>
   0x00000000008047c9 <+695>:    mov    %rbp,%rdi
   0x00000000008047cc <+698>:    callq  *0x20(%rax)
=> 0x00000000008047cf <+701>:    mov    %eax,%r13d
   0x00000000008047d2 <+704>:    xor    %esi,%esi
   0x00000000008047d4 <+706>:    mov    $0x8023f0,%edi
   0x00000000008047d9 <+711>:    callq  0x802af2
   0x00000000008047de <+716>:    jmp    0x804795
<_Z16execute_one_passP8opt_pass+643>
   0x00000000008047e0 <+718>:    test   %rsi,%rsi
   0x00000000008047e3 <+721>:    jne    0x8047f3
<_Z16execute_one_passP8opt_pass+737>
   0x00000000008047e5 <+723>:    cmpq   $0x0,0xbc1bbb(%rip)        # 0x13c63a8
<current_function_decl>
</snipped>

Reply via email to