summaryrefslogtreecommitdiffstats
path: root/clang/test
diff options
context:
space:
mode:
authorAaron Ballman <aaron@aaronballman.com>2015-02-15 22:18:04 +0000
committerAaron Ballman <aaron@aaronballman.com>2015-02-15 22:18:04 +0000
commit8a417bd97b9cf57fbc49bba64a677535dea2b4b3 (patch)
treedf769cc9bf9f3ad05d76dac0b1e50060d7403d85 /clang/test
parentaf09f22c4b70efc342ff2ecc6d5f9148837df42b (diff)
downloadbcm5719-llvm-8a417bd97b9cf57fbc49bba64a677535dea2b4b3.tar.gz
bcm5719-llvm-8a417bd97b9cf57fbc49bba64a677535dea2b4b3.zip
Partial revert of r229336; this wasn't intended to go in.
llvm-svn: 229338
Diffstat (limited to 'clang/test')
-rw-r--r--clang/test/CXX/drs/dr3xx.cpp4
-rw-r--r--clang/test/Misc/warning-flags.c3
-rw-r--r--clang/test/SemaCXX/exceptions.cpp78
-rw-r--r--clang/test/SemaCXX/unreachable-catch-clauses.cpp7
4 files changed, 8 insertions, 84 deletions
diff --git a/clang/test/CXX/drs/dr3xx.cpp b/clang/test/CXX/drs/dr3xx.cpp
index 5ac4f013b7f..cea4d64e7eb 100644
--- a/clang/test/CXX/drs/dr3xx.cpp
+++ b/clang/test/CXX/drs/dr3xx.cpp
@@ -170,9 +170,9 @@ namespace dr308 { // dr308: yes
void f() {
try {
throw D();
- } catch (const A&) { // expected-note {{for type 'const dr308::A &'}}
+ } catch (const A&) {
// unreachable
- } catch (const B&) { // expected-warning {{exception of type 'const dr308::B &' will be caught by earlier handler}}
+ } catch (const B&) {
// get here instead
}
}
diff --git a/clang/test/Misc/warning-flags.c b/clang/test/Misc/warning-flags.c
index 86274ad0bdb..657b44dc185 100644
--- a/clang/test/Misc/warning-flags.c
+++ b/clang/test/Misc/warning-flags.c
@@ -18,7 +18,7 @@ This test serves two purposes:
The list of warnings below should NEVER grow. It should gradually shrink to 0.
-CHECK: Warnings without flags (93):
+CHECK: Warnings without flags (94):
CHECK-NEXT: ext_excess_initializers
CHECK-NEXT: ext_excess_initializers_in_char_array_initializer
CHECK-NEXT: ext_expected_semi_decl_list
@@ -68,6 +68,7 @@ CHECK-NEXT: warn_drv_pch_not_first_include
CHECK-NEXT: warn_dup_category_def
CHECK-NEXT: warn_duplicate_protocol_def
CHECK-NEXT: warn_enum_value_overflow
+CHECK-NEXT: warn_exception_caught_by_earlier_handler
CHECK-NEXT: warn_expected_qualified_after_typename
CHECK-NEXT: warn_extraneous_char_constant
CHECK-NEXT: warn_fe_cc_log_diagnostics_failure
diff --git a/clang/test/SemaCXX/exceptions.cpp b/clang/test/SemaCXX/exceptions.cpp
index fcf540f3b38..9646a9c3b31 100644
--- a/clang/test/SemaCXX/exceptions.cpp
+++ b/clang/test/SemaCXX/exceptions.cpp
@@ -145,81 +145,3 @@ namespace Decay {
}
void rval_ref() throw (int &&); // expected-error {{rvalue reference type 'int &&' is not allowed in exception specification}} expected-warning {{C++11}}
-
-namespace HandlerInversion {
-// RUN: %clang_cc1 -fcxx-exceptions -analyze -analyzer-checker=cplusplus -verify %s
-
-struct B {};
-struct D : B {};
-struct D2 : D {};
-
-void f1() {
- try {
- } catch (B &b) { // expected-note {{for type 'HandlerInversion::B &'}}
- } catch (D &d) { // expected-warning {{exception of type 'HandlerInversion::D &' will be caught by earlier handler}}
- }
-}
-
-void f2() {
- try {
- } catch (B *b) { // expected-note {{for type 'HandlerInversion::B *'}}
- } catch (D *d) { // expected-warning {{exception of type 'HandlerInversion::D *' will be caught by earlier handler}}
- }
-}
-
-void f3() {
- try {
- } catch (D &d) { // Ok
- } catch (B &b) {
- }
-}
-
-void f4() {
- try {
- } catch (B &b) { // Ok
- }
-}
-
-void f5() {
- try {
- } catch (int) {
- } catch (float) {
- }
-}
-
-void f6() {
- try {
- } catch (B &b) { // expected-note {{for type 'HandlerInversion::B &'}}
- } catch (D2 &d) { // expected-warning {{exception of type 'HandlerInversion::D2 &' will be caught by earlier handler}}
- }
-}
-
-void f7() {
- try {
- } catch (B *b) { // Ok
- } catch (D &d) { // Ok
- }
-
- try {
- } catch (B b) { // Ok
- } catch (D *d) { // Ok
- }
-}
-
-void f8() {
- try {
- } catch (const B &b) { // expected-note {{for type 'const HandlerInversion::B &'}}
- } catch (D2 &d) { // expected-warning {{exception of type 'HandlerInversion::D2 &' will be caught by earlier handler}}
- }
-
- try {
- } catch (B &b) { // expected-note {{for type 'HandlerInversion::B &'}}
- } catch (const D2 &d) { // expected-warning {{exception of type 'const HandlerInversion::D2 &' will be caught by earlier handler}}
- }
-
- try {
- } catch (B b) { // expected-note {{for type 'HandlerInversion::B'}}
- } catch (D &d) { // expected-warning {{exception of type 'HandlerInversion::D &' will be caught by earlier handler}}
- }
-}
-}
diff --git a/clang/test/SemaCXX/unreachable-catch-clauses.cpp b/clang/test/SemaCXX/unreachable-catch-clauses.cpp
index 54187138d43..c75067f393e 100644
--- a/clang/test/SemaCXX/unreachable-catch-clauses.cpp
+++ b/clang/test/SemaCXX/unreachable-catch-clauses.cpp
@@ -8,6 +8,7 @@ void f();
void test()
try {}
-catch (BaseEx &e) { f(); } // expected-note {{for type 'BaseEx &'}}
-catch (Ex1 &e) { f(); } // expected-warning {{exception of type 'Ex1 &' will be caught by earlier handler}} expected-note {{for type 'Ex1 &'}}
-catch (Ex2 &e) { f(); } // expected-warning {{exception of type 'Ex2 &' (aka 'Ex1 &') will be caught by earlier handler}}
+catch (BaseEx &e) { f(); }
+catch (Ex1 &e) { f(); } // expected-note {{for type class Ex1 &}}
+catch (Ex2 &e) { f(); } // expected-warning {{exception of type Ex2 & will be caught by earlier handler}}
+
OpenPOWER on IntegriCloud