diff options
author | Jeff Law <law@redhat.com> | 2013-04-03 13:18:09 -0600 |
---|---|---|
committer | Jeff Law <law@gcc.gnu.org> | 2013-04-03 13:18:09 -0600 |
commit | be672e08bbe0d9f210285ec6f3eccf4ff0469d0e (patch) | |
tree | 0a355e4712ab8548abe7e365aa96c85ecd240ec6 /gcc/testsuite | |
parent | 9eb85f272426b21e010a3ca433348fc7efc88eaa (diff) | |
download | gcc-be672e08bbe0d9f210285ec6f3eccf4ff0469d0e.zip gcc-be672e08bbe0d9f210285ec6f3eccf4ff0469d0e.tar.gz gcc-be672e08bbe0d9f210285ec6f3eccf4ff0469d0e.tar.bz2 |
re PR tree-optimization/56799 (Runfail after r197060+r197082.)
PR tree-optimization/56799
* tree-ssa-dom.c (record_equivalences_from_incoming_edge): Bring
back test for widening conversion erroneously dropped in prior
change.
PR tree-optimization/56799
* gcc.c-torture/execute/pr56799.c: New test.
From-SVN: r197453
Diffstat (limited to 'gcc/testsuite')
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.c-torture/execute/pr56799.c | 43 |
2 files changed, 48 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 2cc5fa8..dc0b745 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2013-04-03 Jeff Law <law@redhat.com> + + PR tree-optimization/56799 + * gcc.c-torture/execute/pr56799.c: New test. + 2013-04-03 Paolo Carlini <paolo.carlini@oracle.com> PR c++/56815 diff --git a/gcc/testsuite/gcc.c-torture/execute/pr56799.c b/gcc/testsuite/gcc.c-torture/execute/pr56799.c new file mode 100644 index 0000000..d9ee26b --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/execute/pr56799.c @@ -0,0 +1,43 @@ + +#include <stdio.h> +typedef struct { int x; int y;} S; +extern int foo(S*); +int hi = 0, lo = 0; + +int main() +{ + S a; + int r; + a.x = (int) 0x00010000; + a.y = 1; + r = foo (&a); + if (r == 2 && lo==0 && hi==1) + { + exit (0); + } + abort (); +} + +typedef unsigned short u16; + +__attribute__ ((noinline)) int foo (S* ptr) +{ + int a = ptr->x; + int c = 0; + u16 b = (u16) a; + if (b != 0) + { + lo = 1; + c += ptr->y; + } + b = a >> 16; + if (b != 0) + { + hi = 1; + c+= ptr->y; + } + c += ptr->y; + return c; +} + + |