diff options
author | Craig Topper <craig.topper@intel.com> | 2019-04-24 21:48:24 +0000 |
---|---|---|
committer | Craig Topper <craig.topper@intel.com> | 2019-04-24 21:48:24 +0000 |
commit | 6932abee2c13cb0c8428700dbaa640f3942be930 (patch) | |
tree | 69e7c0832dad446f6af528c0528287a347d53ab0 /llvm/lib | |
parent | 28413dd87aa21c72ab4d3e3f686647999eb59903 (diff) | |
download | bcm5719-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.cpp | 7 |
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; } |