This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug c/34363] New: Aliasing failure during tree fre
- From: "davidu at mips dot com" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 6 Dec 2007 18:35:06 -0000
- Subject: [Bug c/34363] New: Aliasing failure during tree fre
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
Simple test case:
unsigned n;
void foo (unsigned *p)
{
n = 4;
*p = 0;
if (n != 0)
abort ();
}
main ()
{
foo (&n);
return 0;
}
Tested cross-compiling for MIPS, also verified that x86 also has the same
problem.
attached dump from the fre pass.
**** basically n.0_4 should not be assigned the value of 4, since *p can alias
it.
;; Function foo (foo)
Created value VH.0 for p_3
exp_gen[0] := { }
tmp_gen[0] := { p_3 (VH.0) }
avail_out[0] := { p_3 (VH.0) }
exp_gen[2] := { }
tmp_gen[2] := { }
avail_out[2] := { p_3 (VH.0) }
exp_gen[3] := { }
tmp_gen[3] := { }
avail_out[3] := { p_3 (VH.0) }
exp_gen[4] := { }
tmp_gen[4] := { }
avail_out[4] := { p_3 (VH.0) }
exp_gen[1] := { }
tmp_gen[1] := { }
avail_out[1] := { }
Replaced n with 4 in n.0_4 = n;
foo (p)
{
unsigned int n.0;
<bb 2>:
n = 4;
*p_3 = 0;
n.0_4 = 4; *****
if (n.0_4 != 0) goto <L0>; else goto <L1>;
<L0>:;
abort ();
<L1>:;
return;
}
--
Summary: Aliasing failure during tree fre
Product: gcc
Version: 4.2.3
Status: UNCONFIRMED
Severity: major
Priority: P3
Component: c
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: davidu at mips dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34363