mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-13 04:30:23 +00:00
Remove always-true comparison, NFC.
Summary: Looking at r241279, I noticed that UpgradedIntrinsics only gets written to in the following code: if (UpgradeIntrinsicFunction(&F, NewFn)) UpgradedIntrinsics[&F] = NewFn; Looking through UpgradeIntrinsicFunction, we always return false OR NewFn will be set to a different function from our source. This patch pulls the F != NewFn into UpgradeIntrinsicFunction as an assert, and removes the check from callers of UpgradeIntrinsicFunction. Reviewers: rafael, chandlerc Subscribers: llvm-commits-list Differential Revision: http://reviews.llvm.org/D10915 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@241369 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
571beb683f
commit
177fabfc30
@ -4458,14 +4458,11 @@ std::error_code BitcodeReader::materialize(GlobalValue *GV) {
|
||||
|
||||
// Upgrade any old intrinsic calls in the function.
|
||||
for (auto &I : UpgradedIntrinsics) {
|
||||
if (I.first != I.second) {
|
||||
for (auto UI = I.first->user_begin(), UE = I.first->user_end();
|
||||
UI != UE;) {
|
||||
User *U = *UI;
|
||||
++UI;
|
||||
if (CallInst *CI = dyn_cast<CallInst>(U))
|
||||
UpgradeIntrinsicCall(CI, I.second);
|
||||
}
|
||||
for (auto UI = I.first->user_begin(), UE = I.first->user_end(); UI != UE;) {
|
||||
User *U = *UI;
|
||||
++UI;
|
||||
if (CallInst *CI = dyn_cast<CallInst>(U))
|
||||
UpgradeIntrinsicCall(CI, I.second);
|
||||
}
|
||||
}
|
||||
|
||||
@ -4533,15 +4530,13 @@ std::error_code BitcodeReader::materializeModule(Module *M) {
|
||||
// module is materialized because there could always be another function body
|
||||
// with calls to the old function.
|
||||
for (auto &I : UpgradedIntrinsics) {
|
||||
if (I.first != I.second) {
|
||||
for (auto *U : I.first->users()) {
|
||||
if (CallInst *CI = dyn_cast<CallInst>(U))
|
||||
UpgradeIntrinsicCall(CI, I.second);
|
||||
}
|
||||
if (!I.first->use_empty())
|
||||
I.first->replaceAllUsesWith(I.second);
|
||||
I.first->eraseFromParent();
|
||||
for (auto *U : I.first->users()) {
|
||||
if (CallInst *CI = dyn_cast<CallInst>(U))
|
||||
UpgradeIntrinsicCall(CI, I.second);
|
||||
}
|
||||
if (!I.first->use_empty())
|
||||
I.first->replaceAllUsesWith(I.second);
|
||||
I.first->eraseFromParent();
|
||||
}
|
||||
UpgradedIntrinsics.clear();
|
||||
|
||||
|
@ -229,6 +229,7 @@ static bool UpgradeIntrinsicFunction1(Function *F, Function *&NewFn) {
|
||||
bool llvm::UpgradeIntrinsicFunction(Function *F, Function *&NewFn) {
|
||||
NewFn = nullptr;
|
||||
bool Upgraded = UpgradeIntrinsicFunction1(F, NewFn);
|
||||
assert(F != NewFn && "Intrinsic function upgraded to the same function");
|
||||
|
||||
// Upgrade intrinsic attributes. This does not change the function.
|
||||
if (NewFn)
|
||||
@ -710,16 +711,14 @@ void llvm::UpgradeCallsToIntrinsic(Function* F) {
|
||||
// Upgrade the function and check if it is a totaly new function.
|
||||
Function *NewFn;
|
||||
if (UpgradeIntrinsicFunction(F, NewFn)) {
|
||||
if (NewFn != F) {
|
||||
// Replace all uses to the old function with the new one if necessary.
|
||||
for (Value::user_iterator UI = F->user_begin(), UE = F->user_end();
|
||||
UI != UE; ) {
|
||||
if (CallInst *CI = dyn_cast<CallInst>(*UI++))
|
||||
UpgradeIntrinsicCall(CI, NewFn);
|
||||
}
|
||||
// Remove old function, no longer used, from the module.
|
||||
F->eraseFromParent();
|
||||
// Replace all uses to the old function with the new one if necessary.
|
||||
for (Value::user_iterator UI = F->user_begin(), UE = F->user_end();
|
||||
UI != UE;) {
|
||||
if (CallInst *CI = dyn_cast<CallInst>(*UI++))
|
||||
UpgradeIntrinsicCall(CI, NewFn);
|
||||
}
|
||||
// Remove old function, no longer used, from the module.
|
||||
F->eraseFromParent();
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user