vitalybuka updated this revision to Diff 264360.
vitalybuka added a comment.

remove fixme


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D80039/new/

https://reviews.llvm.org/D80039

Files:
  clang/test/Driver/memtag_lto.c

Index: clang/test/Driver/memtag_lto.c
===================================================================
--- /dev/null
+++ clang/test/Driver/memtag_lto.c
@@ -0,0 +1,147 @@
+// REQUIRES: aarch64-registered-target
+
+// RUN: rm -f %t*
+
+// -O1, no tagging: both are unsafe.
+// RUN: %clang -fno-experimental-new-pass-manager -O1 -target aarch64-unknown-linux -S -emit-llvm -c %s -o - | FileCheck %s
+// RUN: %clang    -fexperimental-new-pass-manager -O1 -target aarch64-unknown-linux -S -emit-llvm -c %s -o - | FileCheck %s
+
+// Full LTO: both are unsafe.
+// RUN: %clang -fno-experimental-new-pass-manager -O1 -target aarch64-unknown-linux -c %s -flto=full -o %t.lto1.bc
+// RUN: %clang -fno-experimental-new-pass-manager -O1 -target aarch64-unknown-linux -c -DBUILD2 %s -flto=full -o %t.lto2.bc
+// RUN: llvm-lto2 run -o %t.lto %t.lto1.bc %t.lto2.bc -save-temps -O1 \
+// RUN:  -r %t.lto1.bc,fn,plx \
+// RUN:  -r %t.lto1.bc,use,lx \
+// RUN:  -r %t.lto1.bc,use_local,plx \
+// RUN:  -r %t.lto1.bc,w, \
+// RUN:  -r %t.lto2.bc,use,plx \
+// RUN:  -r %t.lto2.bc,z,
+// RUN: llvm-dis %t.lto.0.5.precodegen.bc -o - | FileCheck %s
+
+// Full LTO, new PM: both are unsafe.
+// RUN: %clang -fexperimental-new-pass-manager -O1 -target aarch64-unknown-linux -c %s -flto=full -o %t.ltonewpm1.bc
+// RUN: %clang -fexperimental-new-pass-manager -O1 -target aarch64-unknown-linux -c -DBUILD2 %s -flto=full -o %t.ltonewpm2.bc
+// RUN: llvm-lto2 run -use-new-pm -o %t.ltonewpm %t.ltonewpm1.bc %t.ltonewpm2.bc -save-temps -O1 \
+// RUN:  -r %t.ltonewpm1.bc,fn,plx \
+// RUN:  -r %t.ltonewpm1.bc,use,lx \
+// RUN:  -r %t.ltonewpm1.bc,use_local,plx \
+// RUN:  -r %t.ltonewpm1.bc,w, \
+// RUN:  -r %t.ltonewpm2.bc,use,plx \
+// RUN:  -r %t.ltonewpm2.bc,z,
+// RUN: llvm-dis %t.ltonewpm.0.5.precodegen.bc -o - | FileCheck %s
+
+// Thin LTO: both are unsafe.
+// RUN: %clang -fno-experimental-new-pass-manager -O1 -target aarch64-unknown-linux -c %s -flto=thin -o %t.thinlto1.bc
+// RUN: %clang -fno-experimental-new-pass-manager -O1 -target aarch64-unknown-linux -c -DBUILD2 %s -flto=thin -o %t.thinlto2.bc
+// RUN: llvm-lto2 run -o %t.thinlto %t.thinlto1.bc %t.thinlto2.bc -save-temps -O1 \
+// RUN:  -r %t.thinlto1.bc,fn,plx \
+// RUN:  -r %t.thinlto1.bc,use,lx \
+// RUN:  -r %t.thinlto1.bc,use_local,plx \
+// RUN:  -r %t.thinlto1.bc,w, \
+// RUN:  -r %t.thinlto2.bc,use,plx \
+// RUN:  -r %t.thinlto2.bc,z,
+// RUN: llvm-dis %t.thinlto.1.5.precodegen.bc -o - | FileCheck %s
+
+// Thin LTO, new PM: both are unsafe.
+// RUN: %clang -fexperimental-new-pass-manager -O1 -target aarch64-unknown-linux -c %s -flto=thin -o %t.thinltonewpm1.bc
+// RUN: %clang -fexperimental-new-pass-manager -O1 -target aarch64-unknown-linux -c -DBUILD2 %s -flto=thin -o %t.thinltonewpm2.bc
+// RUN: llvm-lto2 run -use-new-pm -o %t.thinltonewpm %t.thinltonewpm1.bc %t.thinltonewpm2.bc -save-temps -O1 \
+// RUN:  -r %t.thinltonewpm1.bc,fn,plx \
+// RUN:  -r %t.thinltonewpm1.bc,use,lx \
+// RUN:  -r %t.thinltonewpm1.bc,use_local,plx \
+// RUN:  -r %t.thinltonewpm1.bc,w, \
+// RUN:  -r %t.thinltonewpm2.bc,use,plx \
+// RUN:  -r %t.thinltonewpm2.bc,z,
+// RUN: llvm-dis %t.thinltonewpm.1.5.precodegen.bc -o - | FileCheck %s
+
+// Now with taging.
+// RUN: rm -f %t*
+
+// -O0: both are unsafe.
+// RUN: %clang -fno-experimental-new-pass-manager -O0 -target aarch64-unknown-linux -march=armv8+memtag -fsanitize=memtag -S -emit-llvm -c %s -o - | FileCheck %s
+// RUN: %clang    -fexperimental-new-pass-manager -O0 -target aarch64-unknown-linux -march=armv8+memtag -fsanitize=memtag -S -emit-llvm -c %s -o - | FileCheck %s
+
+// No LTO: just one is safe.
+// RUN: %clang -fno-experimental-new-pass-manager -O1 -target aarch64-unknown-linux -march=armv8+memtag -fsanitize=memtag -S -emit-llvm -c %s -o - | FileCheck %s -check-prefixes=XUNSAFE,YSAFE
+// RUN: %clang    -fexperimental-new-pass-manager -O1 -target aarch64-unknown-linux -march=armv8+memtag -fsanitize=memtag -S -emit-llvm -c %s -o - | FileCheck %s -check-prefixes=XUNSAFE,YSAFE
+
+// Full LTO: both are safe.
+// RUN: %clang -fno-experimental-new-pass-manager -O1 -target aarch64-unknown-linux -march=armv8+memtag -fsanitize=memtag -c %s -flto=full -o %t.lto1.bc
+// RUN: %clang -fno-experimental-new-pass-manager -O1 -target aarch64-unknown-linux -march=armv8+memtag -fsanitize=memtag -c -DBUILD2 %s -flto=full -o %t.lto2.bc
+// RUN: llvm-lto2 run -o %t.lto %t.lto1.bc %t.lto2.bc -save-temps -O1 \
+// RUN:  -r %t.lto1.bc,fn,plx \
+// RUN:  -r %t.lto1.bc,use,lx \
+// RUN:  -r %t.lto1.bc,use_local,plx \
+// RUN:  -r %t.lto1.bc,w, \
+// RUN:  -r %t.lto2.bc,use,plx \
+// RUN:  -r %t.lto2.bc,z,
+// FIXME: Must be -check-prefixes=XSAFE,YSAFE
+// RUN: llvm-dis %t.lto.0.5.precodegen.bc -o - | FileCheck %s -check-prefixes=XUNSAFE,YSAFE
+
+// Full LTO, new PM: both are safe.
+// RUN: %clang -fexperimental-new-pass-manager -O1 -target aarch64-unknown-linux -march=armv8+memtag -fsanitize=memtag -c %s -flto=full -o %t.ltonewpm1.bc
+// RUN: %clang -fexperimental-new-pass-manager -O1 -target aarch64-unknown-linux -march=armv8+memtag -fsanitize=memtag -c -DBUILD2 %s -flto=full -o %t.ltonewpm2.bc
+// RUN: llvm-lto2 run -use-new-pm -o %t.ltonewpm %t.ltonewpm1.bc %t.ltonewpm2.bc -save-temps -O1 \
+// RUN:  -r %t.ltonewpm1.bc,fn,plx \
+// RUN:  -r %t.ltonewpm1.bc,use,lx \
+// RUN:  -r %t.ltonewpm1.bc,use_local,plx \
+// RUN:  -r %t.ltonewpm1.bc,w, \
+// RUN:  -r %t.ltonewpm2.bc,use,plx \
+// RUN:  -r %t.ltonewpm2.bc,z,
+// FIXME: Must be -check-prefixes=XSAFE,YSAFE
+// RUN: llvm-dis %t.ltonewpm.0.5.precodegen.bc -o - | FileCheck %s -check-prefixes=XUNSAFE,YSAFE
+
+// Thin LTO: both are safe.
+// RUN: %clang -fno-experimental-new-pass-manager -O1 -target aarch64-unknown-linux -march=armv8+memtag -fsanitize=memtag -c %s -flto=thin -o %t.thinlto1.bc
+// RUN: %clang -fno-experimental-new-pass-manager -O1 -target aarch64-unknown-linux -march=armv8+memtag -fsanitize=memtag -c -DBUILD2 %s -flto=thin -o %t.thinlto2.bc
+// RUN: llvm-lto2 run -o %t.thinlto %t.thinlto1.bc %t.thinlto2.bc -save-temps -O1 \
+// RUN:  -r %t.thinlto1.bc,fn,plx \
+// RUN:  -r %t.thinlto1.bc,use,lx \
+// RUN:  -r %t.thinlto1.bc,use_local,plx \
+// RUN:  -r %t.thinlto1.bc,w, \
+// RUN:  -r %t.thinlto2.bc,use,plx \
+// RUN:  -r %t.thinlto2.bc,z,
+// FIXME: Must be -check-prefixes=XSAFE,YSAFE
+// RUN: llvm-dis %t.thinlto.1.5.precodegen.bc -o - | FileCheck %s -check-prefixes=XUNSAFE,YSAFE
+
+// Thin LTO, new PM: both are safe.
+// RUN: %clang -fexperimental-new-pass-manager -O1 -target aarch64-unknown-linux -march=armv8+memtag -fsanitize=memtag -c %s -flto=thin -o %t.thinltonewpm1.bc
+// RUN: %clang -fexperimental-new-pass-manager -O1 -target aarch64-unknown-linux -march=armv8+memtag -fsanitize=memtag -c -DBUILD2 %s -flto=thin -o %t.thinltonewpm2.bc
+// RUN: llvm-lto2 run -use-new-pm -o %t.thinltonewpm %t.thinltonewpm1.bc %t.thinltonewpm2.bc -save-temps -O1 \
+// RUN:  -r %t.thinltonewpm1.bc,fn,plx \
+// RUN:  -r %t.thinltonewpm1.bc,use,lx \
+// RUN:  -r %t.thinltonewpm1.bc,use_local,plx \
+// RUN:  -r %t.thinltonewpm1.bc,w, \
+// RUN:  -r %t.thinltonewpm2.bc,use,plx \
+// RUN:  -r %t.thinltonewpm2.bc,z,
+// FIXME: Must be -check-prefixes=XSAFE,YSAFE
+// RUN: llvm-dis %t.thinltonewpm.1.5.precodegen.bc -o - | FileCheck %s -check-prefixes=XUNSAFE,YSAFE
+
+void use(int *p);
+
+#ifdef BUILD2
+
+int z;
+__attribute__((noinline)) void use(int *p) { *p = z; }
+
+#else
+
+char w;
+__attribute__((noinline)) void use_local(char *p) { *p = w; }
+
+__attribute__((visibility("default"))) int fn() {
+  // XUNSAFE: alloca i32, align 4{{$}}
+  // XSAFE: alloca i32, align 4, !stack-safe
+  int x;
+  use(&x);
+
+  // YUNSAFE-NEXT: alloca i8, align 4{{$}}
+  // YSAFE-NEXT: alloca i8, align 4, !stack-safe
+  char y;
+  use_local(&y);
+  return x + y;
+}
+
+// CHECK-NOT: !stack-safe
+
+#endif
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to