summaryrefslogtreecommitdiffstats
path: root/llvm/lib
diff options
context:
space:
mode:
authorCraig Topper <craig.topper@intel.com>2019-04-24 21:48:24 +0000
committerCraig Topper <craig.topper@intel.com>2019-04-24 21:48:24 +0000
commit6932abee2c13cb0c8428700dbaa640f3942be930 (patch)
tree69e7c0832dad446f6af528c0528287a347d53ab0 /llvm/lib
parent28413dd87aa21c72ab4d3e3f686647999eb59903 (diff)
downloadbcm5719-llvm-6932abee2c13cb0c8428700dbaa640f3942be930.tar.gz
bcm5719-llvm-6932abee2c13cb0c8428700dbaa640f3942be930.zip
[X86] Attempt to fix use-after-poison from r359121.
llvm-svn: 359143
Diffstat (limited to 'llvm/lib')
-rw-r--r--llvm/lib/Target/X86/X86ISelDAGToDAG.cpp7
1 files changed, 5 insertions, 2 deletions
diff --git a/llvm/lib/Target/X86/X86ISelDAGToDAG.cpp b/llvm/lib/Target/X86/X86ISelDAGToDAG.cpp
index dd387e5e57c..6cf7833e180 100644
--- a/llvm/lib/Target/X86/X86ISelDAGToDAG.cpp
+++ b/llvm/lib/Target/X86/X86ISelDAGToDAG.cpp
@@ -2066,10 +2066,13 @@ bool X86DAGToDAGISel::selectAddr(SDNode *Parent, SDValue N, SDValue &Base,
AM.Segment = CurDAG->getRegister(X86::SS, MVT::i16);
}
+ // Save the DL and VT before calling matchAddress, it can invalidate N.
+ SDLoc DL(N);
+ MVT VT = N.getSimpleValueType();
+
if (matchAddress(N, AM))
return false;
- MVT VT = N.getSimpleValueType();
if (AM.BaseType == X86ISelAddressMode::RegBase) {
if (!AM.Base_Reg.getNode())
AM.Base_Reg = CurDAG->getRegister(0, VT);
@@ -2078,7 +2081,7 @@ bool X86DAGToDAGISel::selectAddr(SDNode *Parent, SDValue N, SDValue &Base,
if (!AM.IndexReg.getNode())
AM.IndexReg = CurDAG->getRegister(0, VT);
- getAddressOperands(AM, SDLoc(N), Base, Scale, Index, Disp, Segment);
+ getAddressOperands(AM, DL, Base, Scale, Index, Disp, Segment);
return true;
}
OpenPOWER on IntegriCloud