diff options
author | Zhou Sheng <zhousheng00@gmail.com> | 2009-03-18 10:13:08 +0000 |
---|---|---|
committer | Zhou Sheng <zhousheng00@gmail.com> | 2009-03-18 10:13:08 +0000 |
commit | 16767c6b49659d5187ebb70c97207b0bf146ba35 (patch) | |
tree | 60315ad8950a2d3b2de53024c84e151454e24b81 | |
parent | 6b2c7ae2c926d9622c1b5537a789c5d5d726428e (diff) |
Revert my previous change on Local.cpp, instead, fix the bug on scalarrepl.
If the instruction has no users, it is also not only used by debug info
and should not be deleted.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67194 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | lib/Transforms/Scalar/ScalarReplAggregates.cpp | 2 | ||||
-rw-r--r-- | lib/Transforms/Utils/Local.cpp | 3 |
2 files changed, 1 insertions, 4 deletions
diff --git a/lib/Transforms/Scalar/ScalarReplAggregates.cpp b/lib/Transforms/Scalar/ScalarReplAggregates.cpp index 78730b6eb7..358b0981cc 100644 --- a/lib/Transforms/Scalar/ScalarReplAggregates.cpp +++ b/lib/Transforms/Scalar/ScalarReplAggregates.cpp @@ -1223,7 +1223,7 @@ void SROA::CleanupAllocaUsers(AllocationInst *AI) { CleanupGEP(GEPI); else if (Instruction *I = dyn_cast<Instruction>(U)) { SmallVector<DbgInfoIntrinsic *, 2> DbgInUses; - if (OnlyUsedByDbgInfoIntrinsics(I, &DbgInUses)) { + if (!I->use_empty() && OnlyUsedByDbgInfoIntrinsics(I, &DbgInUses)) { // Safe to remove debug info uses. while (!DbgInUses.empty()) { DbgInfoIntrinsic *DI = DbgInUses.back(); DbgInUses.pop_back(); diff --git a/lib/Transforms/Utils/Local.cpp b/lib/Transforms/Utils/Local.cpp index 468136c996..4be1b8717d 100644 --- a/lib/Transforms/Utils/Local.cpp +++ b/lib/Transforms/Utils/Local.cpp @@ -262,9 +262,6 @@ bool llvm::OnlyUsedByDbgInfoIntrinsics(Instruction *I, if (DbgInUses) DbgInUses->clear(); - if (I->use_empty()) - return false; - for (Value::use_iterator UI = I->use_begin(), UE = I->use_end(); UI != UE; ++UI) { if (DbgInfoIntrinsic *DI = dyn_cast<DbgInfoIntrinsic>(*UI)) { |