summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/X86/X86ISelDAGToDAG.cpp
diff options
context:
space:
mode:
authorCraig Topper <craig.topper@intel.com>2018-06-27 20:58:46 +0000
committerCraig Topper <craig.topper@intel.com>2018-06-27 20:58:46 +0000
commit880e34ed45aa1bfae2648d5d3426e6525fafecff (patch)
tree0367b3d6cc2e5521a62d76b8dc1dde84c6a9a91e /llvm/lib/Target/X86/X86ISelDAGToDAG.cpp
parent9b65ffb0976c5b9590959a6439d338fc5ec0dceb (diff)
downloadbcm5719-llvm-880e34ed45aa1bfae2648d5d3426e6525fafecff.tar.gz
bcm5719-llvm-880e34ed45aa1bfae2648d5d3426e6525fafecff.zip
[X86] In X86DAGToDAGISel::PreprocessISelDAG, make sure we don't access N after we delete it.
If we turn X86ISD::AND into ISD::AND, we delete N. But we were continuing onto the next block of code even though N no longer existed. Just happened to notice it. I assume asan didn't notice it because we explicitly unpoison deleted nodes and give them a DELETE_NODE opcode. llvm-svn: 335787
Diffstat (limited to 'llvm/lib/Target/X86/X86ISelDAGToDAG.cpp')
-rw-r--r--llvm/lib/Target/X86/X86ISelDAGToDAG.cpp1
1 files changed, 1 insertions, 0 deletions
diff --git a/llvm/lib/Target/X86/X86ISelDAGToDAG.cpp b/llvm/lib/Target/X86/X86ISelDAGToDAG.cpp
index 754e74c77a8..3382ee808b1 100644
--- a/llvm/lib/Target/X86/X86ISelDAGToDAG.cpp
+++ b/llvm/lib/Target/X86/X86ISelDAGToDAG.cpp
@@ -668,6 +668,7 @@ void X86DAGToDAGISel::PreprocessISelDAG() {
CurDAG->ReplaceAllUsesOfValueWith(SDValue(N, 0), Res);
++I;
CurDAG->DeleteNode(N);
+ continue;
}
if (OptLevel != CodeGenOpt::None &&
OpenPOWER on IntegriCloud