[llvm] r206207 - Add a flag to disable the ARM64DeadRegisterDefinitionsPass
Louis Gerbarg
lgg at apple.com
Mon Apr 14 14:05:02 PDT 2014
Author: louis
Date: Mon Apr 14 16:05:02 2014
New Revision: 206207
URL: http://llvm.org/viewvc/llvm-project?rev=206207&view=rev
Log:
Add a flag to disable the ARM64DeadRegisterDefinitionsPass
This patch adds a -arm64-dead-def-elimination flag so that it is possible to
disable dead definition elimination. Includes test case.
Added:
llvm/trunk/test/CodeGen/ARM64/arm64-dead-def-elimination-flag.ll
Modified:
llvm/trunk/lib/Target/ARM64/ARM64TargetMachine.cpp
Modified: llvm/trunk/lib/Target/ARM64/ARM64TargetMachine.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/ARM64/ARM64TargetMachine.cpp?rev=206207&r1=206206&r2=206207&view=diff
==============================================================================
--- llvm/trunk/lib/Target/ARM64/ARM64TargetMachine.cpp (original)
+++ llvm/trunk/lib/Target/ARM64/ARM64TargetMachine.cpp Mon Apr 14 16:05:02 2014
@@ -39,6 +39,14 @@ EnableCollectLOH("arm64-collect-loh", cl
" optimization hints (LOH)"),
cl::init(true));
+static cl::opt<bool>
+EnableDeadRegisterElimination("arm64-dead-def-elimination", cl::Hidden,
+ cl::desc("Enable the pass that removes dead"
+ " definitons and replaces stores to"
+ " them with stores to the zero"
+ " register"),
+ cl::init(true));
+
extern "C" void LLVMInitializeARM64Target() {
// Register the target.
RegisterTargetMachine<ARM64TargetMachine> X(TheARM64Target);
@@ -135,7 +143,8 @@ bool ARM64PassConfig::addPreRegAlloc() {
bool ARM64PassConfig::addPostRegAlloc() {
// Change dead register definitions to refer to the zero register.
- addPass(createARM64DeadRegisterDefinitions());
+ if (EnableDeadRegisterElimination)
+ addPass(createARM64DeadRegisterDefinitions());
return true;
}
Added: llvm/trunk/test/CodeGen/ARM64/arm64-dead-def-elimination-flag.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/ARM64/arm64-dead-def-elimination-flag.ll?rev=206207&view=auto
==============================================================================
--- llvm/trunk/test/CodeGen/ARM64/arm64-dead-def-elimination-flag.ll (added)
+++ llvm/trunk/test/CodeGen/ARM64/arm64-dead-def-elimination-flag.ll Mon Apr 14 16:05:02 2014
@@ -0,0 +1,16 @@
+; RUN: llc -march=arm64 -arm64-dead-def-elimination=false < %s | FileCheck %s
+
+target datalayout = "e-m:o-i64:64-i128:128-n32:64-S128"
+target triple = "arm64-apple-ios7.0.0"
+
+; Function Attrs: nounwind ssp uwtable
+define i32 @test1() #0 {
+ %tmp1 = alloca i8
+ %tmp2 = icmp eq i8* %tmp1, null
+ %tmp3 = zext i1 %tmp2 to i32
+
+ ret i32 %tmp3
+
+ ; CHECK-LABEL: test1
+ ; CHECK: adds {{x[0-9]+}}, sp, #15
+}
More information about the llvm-commits
mailing list