summaryrefslogtreecommitdiffstats
path: root/clang/test
diff options
context:
space:
mode:
Diffstat (limited to 'clang/test')
-rw-r--r--clang/test/CodeGen/catch-undef-behavior.c8
-rw-r--r--clang/test/CodeGenCXX/catch-undef-behavior.cpp6
-rw-r--r--clang/test/CodeGenCXX/return.cpp6
3 files changed, 20 insertions, 0 deletions
diff --git a/clang/test/CodeGen/catch-undef-behavior.c b/clang/test/CodeGen/catch-undef-behavior.c
index 5832b6c830f..53dda5c8b28 100644
--- a/clang/test/CodeGen/catch-undef-behavior.c
+++ b/clang/test/CodeGen/catch-undef-behavior.c
@@ -44,3 +44,11 @@ int rsh_inbounds(int a, int b) {
// CHECK-NEXT: ret i32 %[[RET]]
return a >> b;
}
+
+// CHECK: @no_return
+int no_return() {
+ // Reaching the end of a noreturn function is fine in C.
+ // CHECK-NOT: call
+ // CHECK-NOT: unreachable
+ // CHECK: ret i32
+}
diff --git a/clang/test/CodeGenCXX/catch-undef-behavior.cpp b/clang/test/CodeGenCXX/catch-undef-behavior.cpp
index 0ec1cc1e052..fdc2b00bcb9 100644
--- a/clang/test/CodeGenCXX/catch-undef-behavior.cpp
+++ b/clang/test/CodeGenCXX/catch-undef-behavior.cpp
@@ -86,3 +86,9 @@ int lsh_overflow(int a, int b) {
// CHECK-NEXT: ret i32 %[[RET]]
return a << b;
}
+
+// CHECK: @_Z9no_return
+int no_return() {
+ // CHECK: call void @llvm.trap
+ // CHECK: unreachable
+}
diff --git a/clang/test/CodeGenCXX/return.cpp b/clang/test/CodeGenCXX/return.cpp
new file mode 100644
index 00000000000..2af1a5266e2
--- /dev/null
+++ b/clang/test/CodeGenCXX/return.cpp
@@ -0,0 +1,6 @@
+// RUN: %clang_cc1 -emit-llvm -o - %s | FileCheck %s
+
+// CHECK: @_Z9no_return
+int no_return() {
+ // CHECK: unreachable
+}
OpenPOWER on IntegriCloud