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

Marc Glisse <glisse at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
            Summary|[5 Regression] ssa          |[4.9/5 Regression] ssa
                   |corruption when compiled    |corruption when compiled
                   |with -O3                    |with -O3

--- Comment #3 from Marc Glisse <glisse at gcc dot gnu.org> ---
Actually no, this isn't related to my clobber patch, I can reproduce with 4.9.


// gcc bug.c -c -O3 -std=gnu99
typedef long __jmp_buf[8];

typedef struct
  {
    unsigned long int __val[16];
  } __sigset_t;

struct __jmp_buf_tag
  {

    __jmp_buf __jmpbuf;
    int __mask_was_saved;
    __sigset_t __saved_mask;
  };

typedef struct __jmp_buf_tag jmp_buf[1];

extern int _setjmp (struct __jmp_buf_tag __env[1]) __attribute__
((__nothrow__));

struct longjmp_buffer {
  jmp_buf buf;
};

void plouf();

extern long interprete()
{
  long * sp;

  struct longjmp_buffer raise_buf;
  _setjmp (raise_buf.buf);

  plouf();
  sp -= 4;
  int n;
  long * args;
  for (int i = 0; i < n; i++)
    args[i] = sp[10-i];
  plouf();
  return 0;
}



$ gcc bug.c -c -O3 -std=gnu99                    

Unable to coalesce ssa_names 2 and 12 which are marked as MUST COALESCE.
sp_2(ab) and  sp_12(ab)
bug.c: In function ‘interprete’:
bug.c:27:13: internal compiler error: SSA corruption
 extern long interprete()
             ^

Reply via email to