aboutsummaryrefslogtreecommitdiff
path: root/test/SemaCXX/array-bounds.cpp
diff options
context:
space:
mode:
authorTed Kremenek <kremenek@apple.com>2011-02-23 01:52:07 +0000
committerTed Kremenek <kremenek@apple.com>2011-02-23 01:52:07 +0000
commit3bcc2be17b5cab730a70df07aa8316885535f564 (patch)
treeeb6442eedfc7bff8489103e18e80a6b2887a3d29 /test/SemaCXX/array-bounds.cpp
parent351ba91eaa6d30e523587b2d7ed676a5172c6e56 (diff)
Add test case for PR 9284, a false positive for -Warray-bounds that is now addressed using basic reachability analysis.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126291 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/SemaCXX/array-bounds.cpp')
-rw-r--r--test/SemaCXX/array-bounds.cpp21
1 files changed, 17 insertions, 4 deletions
diff --git a/test/SemaCXX/array-bounds.cpp b/test/SemaCXX/array-bounds.cpp
index ee7882daea..e82ce60138 100644
--- a/test/SemaCXX/array-bounds.cpp
+++ b/test/SemaCXX/array-bounds.cpp
@@ -90,15 +90,28 @@ int test_pr9240() {
return array[(unsigned long long) 100]; // expected-warning {{array index of '100' indexes past the end of an array (that contains 100 elements)}}
}
+// PR 9284 - a template parameter can cause an array bounds access to be
+// infeasible.
template <bool extendArray>
-void myFunc() {
+void pr9284() {
int arr[3 + (extendArray ? 1 : 0)];
if (extendArray)
- arr[3] = 42;
+ arr[3] = 42; // no-warning
}
-void f() {
- myFunc<false>();
+template <bool extendArray>
+void pr9284b() {
+ int arr[3 + (extendArray ? 1 : 0)]; // expected-note {{array 'arr' declared here}}
+
+ if (!extendArray)
+ arr[3] = 42; // expected-warning{{array index of '3' indexes past the end of an array (that contains 3 elements)}}
+}
+
+void test_pr9284() {
+ pr9284<true>();
+ pr9284<false>();
+ pr9284b<true>();
+ pr9284b<false>(); // expected-note{{in instantiation of function template specialization 'pr9284b<false>' requested here}}
}