Clang Project

clang_source_code/test/CodeGenObjCXX/return.mm
1// RUN: %clang_cc1 -emit-llvm -fblocks -triple x86_64-apple-darwin -fstrict-return -o - %s | FileCheck %s
2// RUN: %clang_cc1 -emit-llvm -fblocks -triple x86_64-apple-darwin -fstrict-return -O -o - %s | FileCheck %s
3
4@interface I
5@end
6
7@implementation I
8
9- (int)method {
10}
11
12@end
13
14enum Enum {
15  a
16};
17
18int (^block)(Enum) = ^int(Enum e) {
19  switch (e) {
20  case a:
21    return 1;
22  }
23};
24
25// Ensure that both methods and blocks don't use the -fstrict-return undefined
26// behaviour optimization.
27
28// CHECK-NOT: call void @llvm.trap
29// CHECK-NOT: unreachable
30