diff options
-rw-r--r-- | gcc/testsuite/g++.dg/opt/loop2.C | 24 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/tree-ssa/pr19055-2.c | 26 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/tree-ssa/pr19055.c | 22 |
3 files changed, 72 insertions, 0 deletions
diff --git a/gcc/testsuite/g++.dg/opt/loop2.C b/gcc/testsuite/g++.dg/opt/loop2.C new file mode 100644 index 0000000..aee612ab --- /dev/null +++ b/gcc/testsuite/g++.dg/opt/loop2.C @@ -0,0 +1,24 @@ +// PR middle-end/22484 +// { dg-do compile } +// { dg-options "-O3" } + +struct A { ~A(); }; +typedef bool B; + +bool foo(); + +bool bar(A&) +{ + B b = true; + + for (int i = 0; i < 2 && b; ++i) + b = foo(); + + return b; +} + +void baz() +{ + A a; + if (bar(a)) foo(); +} diff --git a/gcc/testsuite/gcc.dg/tree-ssa/pr19055-2.c b/gcc/testsuite/gcc.dg/tree-ssa/pr19055-2.c new file mode 100644 index 0000000..2bc2f9b --- /dev/null +++ b/gcc/testsuite/gcc.dg/tree-ssa/pr19055-2.c @@ -0,0 +1,26 @@ +/* { dg-do compile } */ +/* { dg-options "-fdump-tree-gimple" } */ +int f1(int a,int b,int c,int d) +{ + return ((a&d)|(b&c)) ^ (b&c); +} + +int f2(int a,int b,int c,int d) +{ + return (b&c) ^ ((a&d)|(b&c)); +} + +int f3(int a,int b,int c,int d) +{ + return ((b&c)|(a&d)) ^ (b&c); +} + +int f4(int a,int b,int c,int d) +{ + return (b&c) ^ ((b&c)|(a&d)); +} + +/* There should be no ^, 4 ~ and 12 &. */ +/* { dg-final { scan-tree-dump-times "\\^" 0 "gimple"} } */ +/* { dg-final { scan-tree-dump-times "~" 4 "gimple"} } */ +/* { dg-final { scan-tree-dump-times "&" 12 "gimple"} } */ diff --git a/gcc/testsuite/gcc.dg/tree-ssa/pr19055.c b/gcc/testsuite/gcc.dg/tree-ssa/pr19055.c new file mode 100644 index 0000000..48484c6 --- /dev/null +++ b/gcc/testsuite/gcc.dg/tree-ssa/pr19055.c @@ -0,0 +1,22 @@ +/* { dg-do compile } */ +/* { dg-options "-fdump-tree-gimple" } */ +int f1(int a,int b) +{ + return (a|b) ^ b; +} +int f2(int a,int b) +{ + return (b|a) ^ b; +} +int f3(int a,int b) +{ + return b^(a|b); +} +int f4(int a,int b) +{ + return b^(b|a); +} +/* There should be no ^, 4 ~ and 4 &. */ +/* { dg-final { scan-tree-dump-times "\\^" 0 "gimple"} } */ +/* { dg-final { scan-tree-dump-times "~" 4 "gimple"} } */ +/* { dg-final { scan-tree-dump-times "&" 4 "gimple"} } */ |