brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.3 KiB · 476ca0d Raw
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