[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