[PATCH] D34639: Fix DebugLoc propagation for unreachable LoadInst
Weiming Zhao via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Mon Jun 26 12:41:49 PDT 2017
weimingz created this revision.
Herald added a reviewer: dberlin.
Currently, when GVN creates a load and when InstCombine creates a new store for unreachable Load, the DebugLoc info gets lost.
Repository:
rL LLVM
https://reviews.llvm.org/D34639
Files:
lib/Transforms/InstCombine/InstCombineLoadStoreAlloca.cpp
lib/Transforms/Scalar/GVN.cpp
Index: lib/Transforms/Scalar/GVN.cpp
===================================================================
--- lib/Transforms/Scalar/GVN.cpp
+++ lib/Transforms/Scalar/GVN.cpp
@@ -1168,6 +1168,7 @@
LI->isVolatile(), LI->getAlignment(),
LI->getOrdering(), LI->getSynchScope(),
UnavailablePred->getTerminator());
+ NewLoad->setDebugLoc(LI->getDebugLoc());
// Transfer the old load's AA tags to the new load.
AAMDNodes Tags;
Index: lib/Transforms/InstCombine/InstCombineLoadStoreAlloca.cpp
===================================================================
--- lib/Transforms/InstCombine/InstCombineLoadStoreAlloca.cpp
+++ lib/Transforms/InstCombine/InstCombineLoadStoreAlloca.cpp
@@ -985,8 +985,9 @@
// that this code is not reachable. We do this instead of inserting
// an unreachable instruction directly because we cannot modify the
// CFG.
- new StoreInst(UndefValue::get(LI.getType()),
- Constant::getNullValue(Op->getType()), &LI);
+ StoreInst *SI = new StoreInst(UndefValue::get(LI.getType()),
+ Constant::getNullValue(Op->getType()), &LI);
+ SI->setDebugLoc(LI.getDebugLoc());
return replaceInstUsesWith(LI, UndefValue::get(LI.getType()));
}
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D34639.104008.patch
Type: text/x-patch
Size: 1348 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20170626/02b6a282/attachment.bin>
More information about the llvm-commits
mailing list