summaryrefslogtreecommitdiffstats
path: root/clang/test/Sema
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2010-01-12 21:23:57 +0000
committerChris Lattner <sabre@nondot.org>2010-01-12 21:23:57 +0000
commitfaa5417264d4fd3ec923b72f18a78c95a6ae143d (patch)
treede8e25e87dd8ae199eac2b8c4fb800d793bfb7b0 /clang/test/Sema
parent20aee9b9147fa2dcd9e50c0f84d15c87844db773 (diff)
downloadbcm5719-llvm-faa5417264d4fd3ec923b72f18a78c95a6ae143d.tar.gz
bcm5719-llvm-faa5417264d4fd3ec923b72f18a78c95a6ae143d.zip
implement PR6004, warning about divide and remainder by zero.
llvm-svn: 93256
Diffstat (limited to 'clang/test/Sema')
-rw-r--r--clang/test/Sema/exprs.c8
-rw-r--r--clang/test/Sema/i-c-e.c5
2 files changed, 11 insertions, 2 deletions
diff --git a/clang/test/Sema/exprs.c b/clang/test/Sema/exprs.c
index e6cfa5fbe3e..b2f92e2c01f 100644
--- a/clang/test/Sema/exprs.c
+++ b/clang/test/Sema/exprs.c
@@ -114,3 +114,11 @@ test15_t test15(void) {
// rdar://7446395
void test16(float x) { x == ((void*) 0); } // expected-error {{invalid operands to binary expression}}
+// PR6004
+void test17(int x) {
+ x = x / 0; // expected-warning {{division by zero is undefined}}
+ x = x % 0; // expected-warning {{remainder by zero is undefined}}
+ x /= 0; // expected-warning {{division by zero is undefined}}
+ x %= 0; // expected-warning {{remainder by zero is undefined}}
+}
+
diff --git a/clang/test/Sema/i-c-e.c b/clang/test/Sema/i-c-e.c
index c561fe01c6e..97d9f43cfba 100644
--- a/clang/test/Sema/i-c-e.c
+++ b/clang/test/Sema/i-c-e.c
@@ -57,8 +57,9 @@ int comma3[(1,2)]; // expected-warning {{size of static array must be an integer
// Pointer + __builtin_constant_p
char pbcp[__builtin_constant_p(4) ? (intptr_t)&expr : 0]; // expected-error {{variable length array declaration not allowed at file scope}}
-int illegaldiv1[1 || 1/0];
-int illegaldiv2[1/0]; // expected-error {{variable length array declaration not allowed at file scope}}
+int illegaldiv1[1 || 1/0]; // expected-warning {{division by zero is undefined}}
+int illegaldiv2[1/0]; // expected-error {{variable length array declaration not allowed at file scope}} \
+ // expected-warning {{division by zero is undefined}}
int illegaldiv3[INT_MIN / -1]; // expected-error {{variable length array declaration not allowed at file scope}}
int chooseexpr[__builtin_choose_expr(1, 1, expr)];
OpenPOWER on IntegriCloud