summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVitaly Buka <vitalybuka@google.com>2016-07-18 19:44:01 +0000
committerVitaly Buka <vitalybuka@google.com>2016-07-18 19:44:01 +0000
commitc93e10fcbb84f3a9e350104828f8c75bc02a7d51 (patch)
tree533decbc9c8ce6caab49fe7d36f76dbf76d9030f
parentfa474e3eb92735989dbb4e642b6a06a07638a8a9 (diff)
downloadbcm5719-llvm-c93e10fcbb84f3a9e350104828f8c75bc02a7d51.tar.gz
bcm5719-llvm-c93e10fcbb84f3a9e350104828f8c75bc02a7d51.zip
Revert "[ARM] Skip inline asm memory operands in DAGToDAGISel"
Breaks asan, see https://reviews.llvm.org/D22103 This reverts commit r275776. llvm-svn: 275890
-rw-r--r--llvm/lib/Target/ARM/ARMISelDAGToDAG.cpp11
-rw-r--r--llvm/test/CodeGen/ARM/inlineasm3.ll11
2 files changed, 0 insertions, 22 deletions
diff --git a/llvm/lib/Target/ARM/ARMISelDAGToDAG.cpp b/llvm/lib/Target/ARM/ARMISelDAGToDAG.cpp
index 20db3d39bca..c5e1d976bbb 100644
--- a/llvm/lib/Target/ARM/ARMISelDAGToDAG.cpp
+++ b/llvm/lib/Target/ARM/ARMISelDAGToDAG.cpp
@@ -4264,17 +4264,6 @@ bool ARMDAGToDAGISel::tryInlineAsm(SDNode *N){
if (Changed && InlineAsm::isUseOperandTiedToDef(Flag, DefIdx))
IsTiedToChangedOp = OpChanged[DefIdx];
- // Memory operands to inline asm in the SelectionDAG are modeled with two
- // operands: a constant of value InlineAsm::Kind_Mem followed by the input
- // operand. If we get here and we have a Kind_Mem, skip the next operand (so
- // it doesn't get misinterpreted), and continue. We do this here because
- // it's important to update the OpChanged array correctly before moving on.
- if (Kind == InlineAsm::Kind_Mem) {
- SDValue op = N->getOperand(++i);
- AsmNodeOperands.push_back(op);
- continue;
- }
-
if (Kind != InlineAsm::Kind_RegUse && Kind != InlineAsm::Kind_RegDef
&& Kind != InlineAsm::Kind_RegDefEarlyClobber)
continue;
diff --git a/llvm/test/CodeGen/ARM/inlineasm3.ll b/llvm/test/CodeGen/ARM/inlineasm3.ll
index 59706c4e418..eb7ba59b69b 100644
--- a/llvm/test/CodeGen/ARM/inlineasm3.ll
+++ b/llvm/test/CodeGen/ARM/inlineasm3.ll
@@ -121,14 +121,3 @@ entry:
%0 = tail call <4 x i32> asm "vld1.s32 {${0:e}[], ${0:f}[]}, [$1]", "=w,r"(i32* %p) nounwind
ret <4 x i32> %0
}
-
-; Bugzilla PR26038
-
-define i32 @fn1() local_unnamed_addr nounwind {
-; CHECK-LABEL: fn1
-entry:
-; CHECK: mov [[addr:r[0-9]+]], #5
-; CHECK: ldrh {{.*}}[[addr]]
- %0 = tail call i32 asm "ldrh $0, $1", "=r,*Q"(i8* inttoptr (i32 5 to i8*)) nounwind
- ret i32 %0
-}
OpenPOWER on IntegriCloud