summaryrefslogtreecommitdiffstats
path: root/clang/test
diff options
context:
space:
mode:
authorRichard Smith <richard-llvm@metafoo.co.uk>2013-01-30 05:45:05 +0000
committerRichard Smith <richard-llvm@metafoo.co.uk>2013-01-30 05:45:05 +0000
commitdebc59d1f360b1f7a041de72c02d76ed131370c6 (patch)
tree6693132ec1fd52975e19332db23028b63f75fa4b /clang/test
parent457a77739b7c297f40d0e712e8c5ff6cda2aac0f (diff)
downloadbcm5719-llvm-debc59d1f360b1f7a041de72c02d76ed131370c6.tar.gz
bcm5719-llvm-debc59d1f360b1f7a041de72c02d76ed131370c6.zip
Semantic analysis and CodeGen support for C11's _Noreturn. This is modeled as
an attribute for consistency with our other noreturn mechanisms. llvm-svn: 173898
Diffstat (limited to 'clang/test')
-rw-r--r--clang/test/CodeGen/function-attributes.c8
-rw-r--r--clang/test/Sema/return-noreturn.c4
2 files changed, 9 insertions, 3 deletions
diff --git a/clang/test/CodeGen/function-attributes.c b/clang/test/CodeGen/function-attributes.c
index 6cbf40ba220..886bd8d2fb5 100644
--- a/clang/test/CodeGen/function-attributes.c
+++ b/clang/test/CodeGen/function-attributes.c
@@ -32,10 +32,16 @@ void __attribute__((always_inline)) f8(void) { }
// CHECK: call void @f9_t()
// CHECK: noreturn
-// CHECK: {
+// CHECK: }
void __attribute__((noreturn)) f9_t(void);
void f9(void) { f9_t(); }
+// CHECK: call void @f9a()
+// CHECK: noreturn
+// CHECK: }
+_Noreturn void f9a(void);
+void f9b(void) { f9a(); }
+
// FIXME: We should be setting nounwind on calls.
// CHECK: call i32 @f10_t()
// CHECK: readnone
diff --git a/clang/test/Sema/return-noreturn.c b/clang/test/Sema/return-noreturn.c
index 5dd6693373a..6d521eb017c 100644
--- a/clang/test/Sema/return-noreturn.c
+++ b/clang/test/Sema/return-noreturn.c
@@ -36,7 +36,7 @@ test4() {
test2_positive();
}
-// FIXME: do not warn here.
-_Noreturn void test5() { // expected-warning {{could be declared with attribute 'noreturn'}}
+// Do not warn here.
+_Noreturn void test5() {
test2_positive();
}
OpenPOWER on IntegriCloud