44 lines · cpp
1// RUN: %clang_cc1 -emit-llvm -o - -O2 -disable-llvm-passes %s | FileCheck %s --implicit-check-not="call void @llvm.lifetime" --check-prefixes=CHECK,O22// RUN: %clang_cc1 -emit-llvm -o - -O2 -disable-lifetime-markers %s | FileCheck %s --implicit-check-not="call void @llvm.lifetime" --check-prefixes=CHECK3// RUN: %clang_cc1 -emit-llvm -o - -O0 %s | FileCheck %s --implicit-check-not="call void @llvm.lifetime" --check-prefixes=CHECK 4 5extern int bar(char *A, int n);6 7// CHECK-LABEL: @no_switch_bypass8extern "C" void no_switch_bypass(int n) {9 // O2: call void @llvm.lifetime.start.p0(10 switch (n += 1; int b=n) {11 case 1: {12 // O2: call void @llvm.lifetime.start.p0(13 // O2: call void @llvm.lifetime.end.p0(14 char x;15 bar(&x, 1);16 break;17 }18 case 2:19 n = n;20 // O2: call void @llvm.lifetime.start.p0(21 // O2: call void @llvm.lifetime.end.p0(22 char y[5];23 bar(y, 5);24 break;25 }26 // O2: call void @llvm.lifetime.end.p0(27}28 29// CHECK-LABEL: @switch_bypass30extern "C" void switch_bypass(int n) {31 // O2: call void @llvm.lifetime.start.p0(32 // O2: call void @llvm.lifetime.end.p0(33 switch (n += 1; int b=n) {34 case 1:35 n = n;36 char x;37 bar(&x, 1);38 break;39 case 2:40 bar(&x, 1);41 break;42 }43}44