mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-04-13 15:01:21 +08:00
cfgexpand.c (add_alias_set_conflicts): Add conflicts with a variable containing union type only with -fstrict-aliasing.
2011-04-20 Easwaran Raman <eraman@google.com> * cfgexpand.c (add_alias_set_conflicts): Add conflicts with a variable containing union type only with -fstrict-aliasing. 2011-04-20 Easwaran Raman <eraman@google.com> * gcc.dg/stack-layout-1.c: New test. From-SVN: r172788
This commit is contained in:
parent
1809ba94d4
commit
4a25752bbd
gcc
@ -1,3 +1,8 @@
|
||||
2011-04-20 Easwaran Raman <eraman@google.com>
|
||||
|
||||
* cfgexpand.c (add_alias_set_conflicts): Add conflicts with a variable
|
||||
containing union type only with -fstrict-aliasing.
|
||||
|
||||
2011-04-20 Jim Meyering <meyering@redhat.com>
|
||||
|
||||
Remove useless if-before-free tests.
|
||||
|
@ -373,8 +373,9 @@ add_alias_set_conflicts (void)
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
@ -1,3 +1,7 @@
|
||||
2011-04-20 Easwaran Raman <eraman@google.com>
|
||||
|
||||
* gcc.dg/stack-layout-1.c: New test.
|
||||
|
||||
2011-04-20 Daniel Jacobowitz <dan@codesourcery.com>
|
||||
|
||||
* gcc.dg/vect/vect-shift-3.c, gcc.dg/vect/vect-shift-4.c: New.
|
||||
|
25
gcc/testsuite/gcc.dg/stack-layout-1.c
Normal file
25
gcc/testsuite/gcc.dg/stack-layout-1.c
Normal file
@ -0,0 +1,25 @@
|
||||
/* { dg-do compile } */
|
||||
/* { dg-options "-O2 -fno-strict-aliasing -fdump-rtl-expand" } */
|
||||
union U {
|
||||
int a;
|
||||
float b;
|
||||
};
|
||||
struct A {
|
||||
union U u1;
|
||||
char a[100];
|
||||
};
|
||||
void bar (struct A *);
|
||||
void foo ()
|
||||
{
|
||||
{
|
||||
struct A a;
|
||||
bar (&a);
|
||||
}
|
||||
{
|
||||
struct A a;
|
||||
bar (&a);
|
||||
}
|
||||
}
|
||||
|
||||
/* { dg-final { scan-rtl-dump-times "Partition" 1 "expand" } } */
|
||||
/* { dg-final { cleanup-rtl-dump "expand" } } */
|
Loading…
x
Reference in New Issue
Block a user