[Bug tree-optimization/25737] [4.1/4.2 Regression] ACATS tests c974001 and c974013 do not terminate with struct aliasing enabled

rguenth at gcc dot gnu dot org gcc-bugzilla@gcc.gnu.org
Thu Mar 23 11:09:00 GMT 2006



------- Comment #9 from rguenth at gcc dot gnu dot org  2006-03-23 11:08 -------
Yay.  Reduced testcase:

extern void abort (void);

struct delay_block {
  struct delay_block *succ;
};

static struct delay_block Timer_Queue;

struct delay_block* time_enqueue (struct delay_block *d)
{
  struct delay_block *q = Timer_Queue.succ;
  d->succ = (void *)0;
  return Timer_Queue.succ;
}

int main(void)
{
  Timer_Queue.succ = &Timer_Queue;
  if (time_enqueue (&Timer_Queue) != (void*)0)
    abort ();
  return 0;
}

Pointed-to sets for pointers in time_enqueue

d_3, is dereferenced, its value escapes, points-to anything
SFT.0_1
q_2
D.1529_4, its value escapes
<retval>_5

  #   VUSE <SFT.0_1>;
  q_2 = Timer_Queue.succ;
  #   SMT.5_7 = V_MAY_DEF <SMT.5_6>;
  d_3->succ = 0B;
  #   VUSE <SFT.0_1>;
  D.1529_4 = Timer_Queue.succ;


-- 

rguenth at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
            Summary|ACATS tests c974001 and     |[4.1/4.2 Regression] ACATS
                   |c974013 do not terminate    |tests c974001 and c974013 do
                   |with struct aliasing enabled|not terminate with struct
                   |                            |aliasing enabled


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



More information about the Gcc-bugs mailing list