summaryrefslogtreecommitdiff
path: root/gcc/testsuite/g++.dg/warn/Wparentheses-25.C
diff options
context:
space:
mode:
authorupstream source tree <ports@midipix.org>2015-03-15 20:14:05 -0400
committerupstream source tree <ports@midipix.org>2015-03-15 20:14:05 -0400
commit554fd8c5195424bdbcabf5de30fdc183aba391bd (patch)
tree976dc5ab7fddf506dadce60ae936f43f58787092 /gcc/testsuite/g++.dg/warn/Wparentheses-25.C
downloadcbb-gcc-4.6.4-554fd8c5195424bdbcabf5de30fdc183aba391bd.tar.bz2
cbb-gcc-4.6.4-554fd8c5195424bdbcabf5de30fdc183aba391bd.tar.xz
obtained gcc-4.6.4.tar.bz2 from upstream website;upstream
verified gcc-4.6.4.tar.bz2.sig; imported gcc-4.6.4 source tree from verified upstream tarball. downloading a git-generated archive based on the 'upstream' tag should provide you with a source tree that is binary identical to the one extracted from the above tarball. if you have obtained the source via the command 'git clone', however, do note that line-endings of files in your working directory might differ from line-endings of the respective files in the upstream repository.
Diffstat (limited to 'gcc/testsuite/g++.dg/warn/Wparentheses-25.C')
-rw-r--r--gcc/testsuite/g++.dg/warn/Wparentheses-25.C259
1 files changed, 259 insertions, 0 deletions
diff --git a/gcc/testsuite/g++.dg/warn/Wparentheses-25.C b/gcc/testsuite/g++.dg/warn/Wparentheses-25.C
new file mode 100644
index 000000000..ab00c25f0
--- /dev/null
+++ b/gcc/testsuite/g++.dg/warn/Wparentheses-25.C
@@ -0,0 +1,259 @@
+/* PR 7543. Test operation of -Wparentheses. Precedence warnings.
+ !a | b and !a & b. */
+/* { dg-do compile } */
+/* { dg-options "-Wparentheses" } */
+// C++ version of Wparentheses-11.c
+int foo (int);
+
+int
+bar (int a, int b, int c)
+{
+ foo (!a & b); /* { dg-warning "parentheses" "correct warning" { xfail *-*-* } } */
+ foo (!a & (b < c));
+ foo (!a & (b > c));
+ foo (!a & (b == c));
+ foo (!a & (b != c));
+ foo (!a & (b <= c));
+ foo (!a & (b >= c));
+ foo (!a & (b && c));
+ foo (!a & (b || c));
+ foo (!a & !b);
+ foo (!(a & b));
+ foo ((!a) & b);
+ foo (!a & 2); /* { dg-warning "parentheses" "correct warning" { xfail *-*-* } } */
+ foo (!a & (2 < c));
+ foo (!a & (2 > c));
+ foo (!a & (2 == c));
+ foo (!a & (2 != c));
+ foo (!a & (2 <= c));
+ foo (!a & (2 >= c));
+ foo (!a & (2 && c));
+ foo (!a & (2 || c));
+ foo (!a & !2);
+ foo (!(a & 2));
+ foo ((!a) & 2);
+ foo (!1 & 2); /* { dg-warning "parentheses" "correct warning" { xfail *-*-* } } */
+ foo (!1 & (2 < c));
+ foo (!1 & (2 > c));
+ foo (!1 & (2 == c));
+ foo (!1 & (2 != c));
+ foo (!1 & (2 <= c));
+ foo (!1 & (2 >= c));
+ foo (!1 & (2 && c));
+ foo (!1 & (2 || c));
+ foo (!1 & !2);
+ foo (!(1 & 2));
+
+ foo (!a | b); /* { dg-warning "parentheses" "correct warning" { xfail *-*-* } } */
+ foo (!a | (b < c));
+ foo (!a | (b > c));
+ foo (!a | (b == c));
+ foo (!a | (b != c));
+ foo (!a | (b <= c));
+ foo (!a | (b >= c));
+ foo (!a | (b && c));
+ foo (!a | (b || c));
+ foo (!a | !b);
+ foo (!(a | b));
+ foo ((!a) | b);
+ foo (!a | 2); /* { dg-warning "parentheses" "correct warning" { xfail *-*-* } } */
+ foo (!a | (2 < c));
+ foo (!a | (2 > c));
+ foo (!a | (2 == c));
+ foo (!a | (2 != c));
+ foo (!a | (2 <= c));
+ foo (!a | (2 >= c));
+ foo (!a | (2 && c));
+ foo (!a | (2 || c));
+ foo (!a | !2);
+ foo (!(a | 2));
+ foo ((!a) | 2);
+ foo (!1 | 2); /* { dg-warning "parentheses" "correct warning" { xfail *-*-* } } */
+ foo (!1 | (2 < c));
+ foo (!1 | (2 > c));
+ foo (!1 | (2 == c));
+ foo (!1 | (2 != c));
+ foo (!1 | (2 <= c));
+ foo (!1 | (2 >= c));
+ foo (!1 | (2 && c));
+ foo (!1 | (2 || c));
+ foo (!1 | !2);
+ foo (!(1 | 2));
+ foo ((!1) | 2);
+
+ foo (b & !a); /* { dg-bogus "parentheses" "bogus warning" } */
+ foo ((b < c) & !a);
+ foo ((b > c) & !a);
+ foo ((b == c) & !a);
+ foo ((b != c) & !a);
+ foo ((b <= c) & !a);
+ foo ((b >= c) & !a);
+ foo ((b && c) & !a);
+ foo ((b || c) & !a);
+ foo (!b & !a);
+ foo (!(b & a));
+ foo (b & (!a));
+ foo (2 & !a); /* { dg-bogus "parentheses" "correct warning" } */
+ foo ((2 < c) & !a);
+ foo ((2 > c) & !a);
+ foo ((2 == c) & !a);
+ foo ((2 != c) & !a);
+ foo ((2 <= c) & !a);
+ foo ((2 >= c) & !a);
+ foo ((2 && c) & !a);
+ foo ((2 || c) & !a);
+ foo (!2 & !a);
+ foo (!(2 & a));
+ foo (2 & (!a));
+ foo (2 & !1); /* { dg-bogus "parentheses" "correct warning" } */
+ foo ((2 < c) & !1);
+ foo ((2 > c) & !1);
+ foo ((2 == c) & !1);
+ foo ((2 != c) & !1);
+ foo ((2 <= c) & !1);
+ foo ((2 >= c) & !1);
+ foo ((2 && c) & !1);
+ foo ((2 || c) & !1);
+ foo (!2 & !1);
+ foo (!(2 & 1));
+
+ foo (b | !a); /* { dg-bogus "parentheses" "correct warning" } */
+ foo ((b < c) | !a);
+ foo ((b > c) | !a);
+ foo ((b == c) | !a);
+ foo ((b != c) | !a);
+ foo ((b <= c) | !a);
+ foo ((b >= c) | !a);
+ foo ((b && c) | !a);
+ foo ((b || c) | !a);
+ foo (!b | !a);
+ foo (!(b | a));
+ foo (b | (!a));
+ foo (2 | !a); /* { dg-bogus "parentheses" "correct warning" } */
+ foo ((2 < c) | !a);
+ foo ((2 > c) | !a);
+ foo ((2 == c) | !a);
+ foo ((2 != c) | !a);
+ foo ((2 <= c) | !a);
+ foo ((2 >= c) | !a);
+ foo ((2 && c) | !a);
+ foo ((2 || c) | !a);
+ foo (!2 | !a);
+ foo (!(2 | a));
+ foo (2 | (!a));
+ foo (2 | !1); /* { dg-bogus "parentheses" "correct warning" } */
+ foo ((2 < c) | !1);
+ foo ((2 > c) | !1);
+ foo ((2 == c) | !1);
+ foo ((2 != c) | !1);
+ foo ((2 <= c) | !1);
+ foo ((2 >= c) | !1);
+ foo ((2 && c) | !1);
+ foo ((2 || c) | !1);
+ foo (!2 | !1);
+ foo (!(2 | 1));
+ foo (2 | (!1));
+}
+
+
+int
+baz (int a, int b, int c)
+{
+ foo (!a & (b << c));/* { dg-warning "parentheses" "correct warning" { xfail *-*-* } } */
+ foo (!a & (b >> c));/* { dg-warning "parentheses" "correct warning" { xfail *-*-* } } */
+ foo (!a & (b + c)); /* { dg-warning "parentheses" "correct warning" { xfail *-*-* } } */
+ foo (!a & (b - c)); /* { dg-warning "parentheses" "correct warning" { xfail *-*-* } } */
+ foo (!a & (b = c)); /* { dg-warning "parentheses" "correct warning" { xfail *-*-* } } */
+ foo (!a & ~b); /* { dg-warning "parentheses" "correct warning" { xfail *-*-* } } */
+ foo (!a & (b & c)); /* { dg-warning "parentheses" "correct warning" { xfail *-*-* } } */
+ foo (!a & (b | c)); /* { dg-warning "parentheses" "correct warning" { xfail *-*-* } } */
+ foo (!a & 2); /* { dg-warning "parentheses" "correct warning" { xfail *-*-* } } */
+ foo (!a & (2 << c));/* { dg-warning "parentheses" "correct warning" { xfail *-*-* } } */
+ foo (!a & (2 >> c));/* { dg-warning "parentheses" "correct warning" { xfail *-*-* } } */
+ foo (!a & (2 + c)); /* { dg-warning "parentheses" "correct warning" { xfail *-*-* } } */
+ foo (!a & (2 - c)); /* { dg-warning "parentheses" "correct warning" { xfail *-*-* } } */
+ foo (!a & (c = 2)); /* { dg-warning "parentheses" "correct warning" { xfail *-*-* } } */
+ foo (!a & ~2); /* { dg-warning "parentheses" "correct warning" { xfail *-*-* } } */
+ foo (!a & (2 & c)); /* { dg-warning "parentheses" "correct warning" { xfail *-*-* } } */
+ foo (!a & (2 | c)); /* { dg-warning "parentheses" "correct warning" { xfail *-*-* } } */
+ foo (!1 & (2 << c));/* { dg-warning "parentheses" "correct warning" { xfail *-*-* } } */
+ foo (!1 & (2 >> c));/* { dg-warning "parentheses" "correct warning" { xfail *-*-* } } */
+ foo (!1 & (2 + c)); /* { dg-warning "parentheses" "correct warning" { xfail *-*-* } } */
+ foo (!1 & (2 - c)); /* { dg-warning "parentheses" "correct warning" { xfail *-*-* } } */
+ foo (!1 & (c = 2)); /* { dg-warning "parentheses" "correct warning" { xfail *-*-* } } */
+ foo (!1 & ~2); /* { dg-warning "parentheses" "correct warning" { xfail *-*-* } } */
+ foo (!1 & (2 & c)); /* { dg-warning "parentheses" "correct warning" { xfail *-*-* } } */
+ foo (!1 & (2 | c)); /* { dg-warning "parentheses" "correct warning" { xfail *-*-* } } */
+ foo (!a | (b << c));/* { dg-warning "parentheses" "correct warning" { xfail *-*-* } } */
+ foo (!a | (b >> c));/* { dg-warning "parentheses" "correct warning" { xfail *-*-* } } */
+ foo (!a | (b + c)); /* { dg-warning "parentheses" "correct warning" { xfail *-*-* } } */
+ foo (!a | (b - c)); /* { dg-warning "parentheses" "correct warning" { xfail *-*-* } } */
+ foo (!a | (b = c)); /* { dg-warning "parentheses" "correct warning" { xfail *-*-* } } */
+ foo (!a | ~b); /* { dg-warning "parentheses" "correct warning" { xfail *-*-* } } */
+ foo (!a | (b & c)); /* { dg-warning "parentheses" "correct warning" { xfail *-*-* } } */
+ foo (!a | (b | c)); /* { dg-warning "parentheses" "correct warning" { xfail *-*-* } } */
+ foo (!a | (2 << c));/* { dg-warning "parentheses" "correct warning" { xfail *-*-* } } */
+ foo (!a | (2 >> c));/* { dg-warning "parentheses" "correct warning" { xfail *-*-* } } */
+ foo (!a | (2 + c)); /* { dg-warning "parentheses" "correct warning" { xfail *-*-* } } */
+ foo (!a | (2 - c)); /* { dg-warning "parentheses" "correct warning" { xfail *-*-* } } */
+ foo (!a | (c = 2)); /* { dg-warning "parentheses" "correct warning" { xfail *-*-* } } */
+ foo (!a | ~2); /* { dg-warning "parentheses" "correct warning" { xfail *-*-* } } */
+ foo (!a | (2 & c)); /* { dg-warning "parentheses" "correct warning" { xfail *-*-* } } */
+ foo (!a | (2 | c)); /* { dg-warning "parentheses" "correct warning" { xfail *-*-* } } */
+ foo (!1 | (2 << c));/* { dg-warning "parentheses" "correct warning" { xfail *-*-* } } */
+ foo (!1 | (2 >> c));/* { dg-warning "parentheses" "correct warning" { xfail *-*-* } } */
+ foo (!1 | (2 + c)); /* { dg-warning "parentheses" "correct warning" { xfail *-*-* } } */
+ foo (!1 | (2 - c)); /* { dg-warning "parentheses" "correct warning" { xfail *-*-* } } */
+ foo (!1 | (c = 2)); /* { dg-warning "parentheses" "correct warning" { xfail *-*-* } } */
+ foo (!1 | ~2); /* { dg-warning "parentheses" "correct warning" { xfail *-*-* } } */
+ foo (!1 | (2 & c)); /* { dg-warning "parentheses" "correct warning" { xfail *-*-* } } */
+ foo (!1 | (2 | c)); /* { dg-warning "parentheses" "correct warning" { xfail *-*-* } } */
+ foo ((b << c) & !a);
+ foo ((b >> c) & !a);
+ foo ((b + c) & !a);
+ foo ((b - c) & !a);
+ foo ((b = c) & !a);
+ foo (~b & !a);
+ foo ((b & c) & !a);
+ foo ((b | c) & !a);
+ foo ((2 << c) & !a);
+ foo ((2 >> c) & !a);
+ foo ((2 + c) & !a);
+ foo ((2 - c) & !a);
+ foo ((c = 2) & !a);
+ foo (~2 & !a);
+ foo ((2 & c) & !a);
+ foo ((2 | c) & !a);
+ foo ((2 << c) & !1);
+ foo ((2 >> c) & !1);
+ foo ((2 + c) & !1);
+ foo ((2 - c) & !1);
+ foo ((c = 2) & !1);
+ foo (~2 & !1);
+ foo ((2 & c) & !1);
+ foo ((2 | c) & !1);
+ foo ((b << c) | !a);
+ foo ((b >> c) | !a);
+ foo ((b + c) | !a);
+ foo ((b - c) | !a);
+ foo ((b = c) | !a);
+ foo (~b | !a);
+ foo ((b & c) | !a);
+ foo ((b | c) | !a);
+ foo ((2 << c) | !a);
+ foo ((2 >> c) | !a);
+ foo ((2 + c) | !a);
+ foo ((2 - c) | !a);
+ foo ((c = 2) | !a);
+ foo (~2 | !a);
+ foo ((2 & c) | !a);
+ foo ((2 | c) | !a);
+ foo ((2 << c) | !1);
+ foo ((2 >> c) | !1);
+ foo ((2 + c) | !1);
+ foo ((2 - c) | !1);
+ foo ((c = 2) | !1);
+ foo (~2 | !1);
+ foo ((2 & c) | !1);
+ foo ((2 | c) | !1);
+}