From e677c7bd2284caba8d8b79d738107d7fbde6097d Mon Sep 17 00:00:00 2001 From: Davide Italiano Date: Wed, 20 May 2015 21:40:38 +0000 Subject: [PATCH 1/1] [Target/ARM] Only enable OptimizeBarrierPass at -O1 and above. Ideally this is going to be and LLVM IR pass (shared, among others with AArch64), but for the time being just enable it if consumers ask us for optimization and not unconditionally. Discussed with Tim Northover on IRC. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237837 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Target/ARM/ARMTargetMachine.cpp | 5 ++++- test/CodeGen/ARM/noopt-dmb-v7.ll | 15 +++++++++++++++ test/CodeGen/ARM/optimize-dmbs-v7.ll | 2 +- 3 files changed, 20 insertions(+), 2 deletions(-) create mode 100644 test/CodeGen/ARM/noopt-dmb-v7.ll diff --git a/lib/Target/ARM/ARMTargetMachine.cpp b/lib/Target/ARM/ARMTargetMachine.cpp index bd29a052c37..e794fb71af6 100644 --- a/lib/Target/ARM/ARMTargetMachine.cpp +++ b/lib/Target/ARM/ARMTargetMachine.cpp @@ -402,6 +402,9 @@ void ARMPassConfig::addPreEmitPass() { if (getARMSubtarget().isThumb2()) addPass(&UnpackMachineBundlesID); - addPass(createARMOptimizeBarriersPass()); + // Don't optimize barriers at -O0. + if (getOptLevel() != CodeGenOpt::None) + addPass(createARMOptimizeBarriersPass()); + addPass(createARMConstantIslandPass()); } diff --git a/test/CodeGen/ARM/noopt-dmb-v7.ll b/test/CodeGen/ARM/noopt-dmb-v7.ll new file mode 100644 index 00000000000..56a29c8a17e --- /dev/null +++ b/test/CodeGen/ARM/noopt-dmb-v7.ll @@ -0,0 +1,15 @@ +; Ensure that adjacent duplicated barriers are not removed at -O0. +; RUN: llc -O0 < %s -mtriple=armv7 -mattr=+db | FileCheck %s + +define i32 @t1() { +entry: + fence seq_cst + fence seq_cst + fence seq_cst + ret i32 0 +} + +; CHECK: @ BB#0: @ %entry +; CHECK-NEXT: dmb ish +; CHECK-NEXT: dmb ish +; CHECK-NEXT: dmb ish diff --git a/test/CodeGen/ARM/optimize-dmbs-v7.ll b/test/CodeGen/ARM/optimize-dmbs-v7.ll index 64f5e202d36..34a55aa718a 100644 --- a/test/CodeGen/ARM/optimize-dmbs-v7.ll +++ b/test/CodeGen/ARM/optimize-dmbs-v7.ll @@ -1,4 +1,4 @@ -; RUN: llc < %s -mtriple=armv7 -mattr=+db | FileCheck %s +; RUN: llc -O1 < %s -mtriple=armv7 -mattr=+db | FileCheck %s @x1 = global i32 0, align 4 @x2 = global i32 0, align 4 -- 2.34.1