From 16767c6b49659d5187ebb70c97207b0bf146ba35 Mon Sep 17 00:00:00 2001 From: Zhou Sheng Date: Wed, 18 Mar 2009 10:13:08 +0000 Subject: [PATCH] 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 --- lib/Transforms/Scalar/ScalarReplAggregates.cpp | 2 +- lib/Transforms/Utils/Local.cpp | 3 --- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/lib/Transforms/Scalar/ScalarReplAggregates.cpp b/lib/Transforms/Scalar/ScalarReplAggregates.cpp index 78730b6eb72..358b0981cc8 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(U)) { SmallVector 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 468136c9968..4be1b8717d2 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(*UI)) {