On Sun, Apr 17, 2011 at 1:39 PM, Steven Bosscher <stevenb....@gmail.com> wrote: > On Sun, Apr 17, 2011 at 9:39 PM, Easwaran Raman <era...@google.com> wrote: >> @@ -372,8 +366,9 @@ >> to elements will conflict. In case of unions we have >> to be careful as type based aliasing rules may say >> access to the same memory does not conflict. So play >> - safe and add a conflict in this case. */ >> - || contains_union) >> + safe and add a conflict in this case when -fstrict-aliasing >> + is used. */ >> + || (contains_union && flag_strict_aliasing)) >> add_stack_var_conflict (i, j); >> } >> } > > Are you sure this change is safe? See http://gcc.gnu.org/PR25654 > > Ciao! > Steven >
I tried the test case in PR25654 and with my patch and on -O2 -fno-strict-aliasing it puts the two variables in the same partition and the test passes. My understanding of that issue is that with -fstrict-aliasing, the short * and int * are assumed to point to different locations and hence they can't share stack slots, but with -fno-strict-aliasing that assumption is not valid. Thanks, Easwaran