diff options
Diffstat (limited to 'clang/test')
-rw-r--r-- | clang/test/CodeGen/catch-undef-behavior.c | 8 | ||||
-rw-r--r-- | clang/test/CodeGenCXX/catch-undef-behavior.cpp | 6 | ||||
-rw-r--r-- | clang/test/CodeGenCXX/return.cpp | 6 |
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 +} |