[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.

llvm-svn: 237837
This commit is contained in:
Davide Italiano 2015-05-20 21:40:38 +00:00
parent 2adfa3be0a
commit 141b2891cb
3 changed files with 20 additions and 2 deletions

View File

@ -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());
}

View File

@ -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

View File

@ -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