1 // RUN: %clang -S -emit-llvm -o - -O2 %s | FileCheck %s -check-prefixes=CHECK,O2
2 // RUN: %clang -S -emit-llvm -o - -O0 %s | FileCheck %s -check-prefixes=CHECK,O0
4 extern int bar(char *A, int n);
7 // O0-NOT: @llvm.lifetime.start
10 // O2: @llvm.lifetime.start
14 // O2: @llvm.lifetime.start
20 // CHECK-LABEL: @no_goto_bypass
21 void no_goto_bypass() {
22 // O2: @llvm.lifetime.start(i64 1
26 // O2: @llvm.lifetime.start(i64 5
27 // O2: @llvm.lifetime.end(i64 5
32 // O2-NOT: @llvm.lifetime.end(i64 1
35 // CHECK-LABEL: @goto_bypass
38 // O2-NOT: @llvm.lifetime.start(i64 1
39 // O2-NOT: @llvm.lifetime.end(i64 1
47 // CHECK-LABEL: @no_switch_bypass
48 void no_switch_bypass(int n) {
51 // O2: @llvm.lifetime.start(i64 1
52 // O2: @llvm.lifetime.end(i64 1
59 // O2: @llvm.lifetime.start(i64 5
60 // O2: @llvm.lifetime.end(i64 5
67 // CHECK-LABEL: @switch_bypass
68 void switch_bypass(int n) {
72 // O2-NOT: @llvm.lifetime.start(i64 1
73 // O2-NOT: @llvm.lifetime.end(i64 1
83 // CHECK-LABEL: @indirect_jump
84 void indirect_jump(int n) {
86 // O2-NOT: @llvm.lifetime