diff options
author | Tom de Vries <tom@codesourcery.com> | 2011-10-07 12:49:56 +0000 |
---|---|---|
committer | Tom de Vries <vries@gcc.gnu.org> | 2011-10-07 12:49:56 +0000 |
commit | 8be5e1cc7d2c6d8fbc9a9ca8b199b1ae258fd180 (patch) | |
tree | 2b885fae443ba49e8541259e7b461acaa88c5629 /gcc | |
parent | 13e49da934e9ec80360817bc09c08be39aff479c (diff) | |
download | gcc-8be5e1cc7d2c6d8fbc9a9ca8b199b1ae258fd180.zip gcc-8be5e1cc7d2c6d8fbc9a9ca8b199b1ae258fd180.tar.gz gcc-8be5e1cc7d2c6d8fbc9a9ca8b199b1ae258fd180.tar.bz2 |
re PR middle-end/50527 (inconsistent vla align)
2011-10-07 Tom de Vries <tom@codesourcery.com>
PR middle-end/50527
* gcc.dg/pr50527.c: New test.
From-SVN: r179656
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/pr50527.c | 46 |
2 files changed, 51 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 7597cd2..bedf1a0 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2011-10-07 Tom de Vries <tom@codesourcery.com> + + PR middle-end/50527 + * gcc.dg/pr50527.c: New test. + 2011-10-07 Jakub Jelinek <jakub@redhat.com> PR tree-optimization/50650 diff --git a/gcc/testsuite/gcc.dg/pr50527.c b/gcc/testsuite/gcc.dg/pr50527.c new file mode 100644 index 0000000..87fae96 --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr50527.c @@ -0,0 +1,46 @@ +/* { dg-do run } */ +/* { dg-options "-Os --param large-stack-frame=30" } */ + +extern void abort (void); + +void __attribute__((noinline)) +bar (char *a) +{ +} + +void __attribute__((noinline)) +foo (char *a, int b) +{ +} + +void __attribute__((noinline)) +test_align (char *p, int aligned, unsigned int mask) +{ + int p_aligned = ((unsigned long int)p & mask) == 0; + if (aligned != p_aligned) + abort (); +} + +int +main () +{ + const int kIterations = 4; + char results[kIterations]; + int i; + unsigned int mask; + + mask = 0xf; + test_align (results, ((unsigned long int)results & mask) == 0, mask); + mask = 0x7; + test_align (results, ((unsigned long int)results & mask) == 0, mask); + mask = 0x3; + test_align (results, ((unsigned long int)results & mask) == 0, mask); + mask = 0x1; + test_align (results, ((unsigned long int)results & mask) == 0, mask); + + bar (results); + for (i = 0; i < kIterations; i++) + foo ("%d ", results[i]); + + return 0; +} |