|  | // RUN: %clang_cc1 -S -emit-llvm -o - -O2 -disable-llvm-passes %s      | FileCheck %s --implicit-check-not="call void @llvm.lifetime" --check-prefixes=CHECK,O2 | 
|  | // RUN: %clang_cc1 -S -emit-llvm -o - -O2 -disable-lifetime-markers %s | FileCheck %s --implicit-check-not="call void @llvm.lifetime" --check-prefixes=CHECK | 
|  | // RUN: %clang_cc1 -S -emit-llvm -o - -O0 %s                           | FileCheck %s --implicit-check-not="call void @llvm.lifetime" --check-prefixes=CHECK | 
|  |  | 
|  | extern int bar(char *A, int n); | 
|  |  | 
|  | // CHECK-LABEL: @no_switch_bypass | 
|  | extern "C" void no_switch_bypass(int n) { | 
|  | // O2: call void @llvm.lifetime.start.p0(i64 4, | 
|  | switch (n += 1; int b=n) { | 
|  | case 1: { | 
|  | // O2: call void @llvm.lifetime.start.p0(i64 1, | 
|  | // O2: call void @llvm.lifetime.end.p0(i64 1, | 
|  | char x; | 
|  | bar(&x, 1); | 
|  | break; | 
|  | } | 
|  | case 2: | 
|  | n = n; | 
|  | // O2: call void @llvm.lifetime.start.p0(i64 5, | 
|  | // O2: call void @llvm.lifetime.end.p0(i64 5, | 
|  | char y[5]; | 
|  | bar(y, 5); | 
|  | break; | 
|  | } | 
|  | // O2: call void @llvm.lifetime.end.p0(i64 4, | 
|  | } | 
|  |  | 
|  | // CHECK-LABEL: @switch_bypass | 
|  | extern "C" void switch_bypass(int n) { | 
|  | // O2: call void @llvm.lifetime.start.p0(i64 4, | 
|  | // O2: call void @llvm.lifetime.end.p0(i64 4, | 
|  | switch (n += 1; int b=n) { | 
|  | case 1: | 
|  | n = n; | 
|  | char x; | 
|  | bar(&x, 1); | 
|  | break; | 
|  | case 2: | 
|  | bar(&x, 1); | 
|  | break; | 
|  | } | 
|  | } |