dwang created this revision.
Herald added a project: All.
dwang requested review of this revision.
Herald added a project: clang.
Herald added a subscriber: cfe-commits.
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D152412
Files:
clang/test/CodeGen/lifetime3.cpp
Index: clang/test/CodeGen/lifetime3.cpp
===
--- /dev/null
+++ clang/test/CodeGen/lifetime3.cpp
@@ -0,0 +1,43 @@
+// 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;
+ }
+}
Index: clang/test/CodeGen/lifetime3.cpp
===
--- /dev/null
+++ clang/test/CodeGen/lifetime3.cpp
@@ -0,0 +1,43 @@
+// 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;
+ }
+}
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits