From 554fd8c5195424bdbcabf5de30fdc183aba391bd Mon Sep 17 00:00:00 2001 From: upstream source tree Date: Sun, 15 Mar 2015 20:14:05 -0400 Subject: obtained gcc-4.6.4.tar.bz2 from upstream website; 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. --- gcc/testsuite/gcc.dg/sequence-pt-pr17880.c | 54 ++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 gcc/testsuite/gcc.dg/sequence-pt-pr17880.c (limited to 'gcc/testsuite/gcc.dg/sequence-pt-pr17880.c') diff --git a/gcc/testsuite/gcc.dg/sequence-pt-pr17880.c b/gcc/testsuite/gcc.dg/sequence-pt-pr17880.c new file mode 100644 index 000000000..df706e577 --- /dev/null +++ b/gcc/testsuite/gcc.dg/sequence-pt-pr17880.c @@ -0,0 +1,54 @@ +/* PR 17880 */ +/* { dg-do compile } */ +/* { dg-options "-Wsequence-point" } */ + +int +foo (int x) +{ + unsigned int a; + int b; + + b = (a += 5) > a; /* { dg-warning "undefined" "sequence point warning" } */ + b = (a += 5) + a == 10; /* { dg-warning "undefined" "sequence point warning" } */ + b = (a -= 5) > a; /* { dg-warning "undefined" "sequence point warning" } */ + b = (a -= 5) + a == 10; /* { dg-warning "undefined" "sequence point warning" } */ + b = a-- > a; /* { dg-warning "undefined" "sequence point warning" } */ + b = a-- + a == 10; /* { dg-warning "undefined" "sequence point warning" } */ + b = ++a > a; /* { dg-warning "undefined" "sequence point warning" } */ + b = ++a + a == 10; /* { dg-warning "undefined" "sequence point warning" } */ + + if ((a += 5) > a) return -1; /* { dg-warning "undefined" "sequence point warning" } */ + if ((a += 5) + a == 10) return -1; /* { dg-warning "undefined" "sequence point warning" } */ + if ((a -= 5) > a) return -1; /* { dg-warning "undefined" "sequence point warning" } */ + if ((a -= 5) + a == 10) return -1; /* { dg-warning "undefined" "sequence point warning" } */ + if (a-- > a) return -1; /* { dg-warning "undefined" "sequence point warning" } */ + if (a-- + a == 10) return -1; /* { dg-warning "undefined" "sequence point warning" } */ + if (++a > a) return -1; /* { dg-warning "undefined" "sequence point warning" } */ + if (++a + a == 10) return -1; /* { dg-warning "undefined" "sequence point warning" } */ + do {} while ((a += 5) > a); /* { dg-warning "undefined" "sequence point warning" } */ + while ((a += 5) > a); /* { dg-warning "undefined" "sequence point warning" } */ + for ((a += 5) > a;;); /* { dg-warning "undefined" "sequence point warning" } */ + for (b = (a += 5) > a;;); /* { dg-warning "undefined" "sequence point warning" } */ + for (; (a += 5) > a;); /* { dg-warning "undefined" "sequence point warning" } */ + for (;; b = (a += 5) > a); /* { dg-warning "undefined" "sequence point warning" } */ + for (;; a++ + a++); /* { dg-warning "undefined" "sequence point warning" } */ + if (a) a++ - a--; /* { dg-warning "undefined" "sequence point warning" } */ + ((a +=5) > a) ? a : b; /* { dg-warning "undefined" "sequence point warning" } */ + return (a++ - a--); /* { dg-warning "undefined" "sequence point warning" } */ +} + +void bar (int i) +{ + int a = i++ - i++; /* { dg-warning "undefined" "sequence point warning" } */ +} + +void baz (int i) +{ + switch (i++ + i++) /* { dg-warning "undefined" "sequence point warning" } */ + { + case 1: + i++ - i++; /* { dg-warning "undefined" "sequence point warning" } */ + case 2: + break; + } +} -- cgit v1.2.3