http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57026



Jakub Jelinek <jakub at gcc dot gnu.org> changed:



           What    |Removed                     |Added

----------------------------------------------------------------------------

             Status|UNCONFIRMED                 |NEW

   Last reconfirmed|                            |2013-04-22

          Component|c                           |middle-end

                 CC|                            |jakub at gcc dot gnu.org

     Ever Confirmed|0                           |1

   Target Milestone|---                         |4.9.0



--- Comment #1 from Jakub Jelinek <jakub at gcc dot gnu.org> 2013-04-22 
06:55:04 UTC ---

Reduced testcase:

typedef struct __jmp_buf_tag { char buf[1024]; } jmp_buf[1];

extern int setjmp (jmp_buf);

extern int bar (unsigned int *);

extern jmp_buf *baz (void);

struct C { int c1; unsigned int c2, c3, c4; };



void

foo (struct C *x, const int *y, unsigned int *z, unsigned int e, unsigned int

g)

{

  unsigned int d;

  unsigned long f;

  setjmp (*baz ());

  f = d;

  if ((x->c1 || x->c2) && g && (!e || d >= 8))

    d = 16;

  else

    d = 8;

  if ((!x->c3 && !x->c4 || *y == 0) && !e && bar (z))

    *z = f;

}



Guess caused by http://gcc.gnu.org/r198096

Reply via email to