diff options
Diffstat (limited to 'llvm/lib/Transforms/IPO/Attributor.cpp')
| -rw-r--r-- | llvm/lib/Transforms/IPO/Attributor.cpp | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/llvm/lib/Transforms/IPO/Attributor.cpp b/llvm/lib/Transforms/IPO/Attributor.cpp index 448a2d4b6c1..5082aa26dba 100644 --- a/llvm/lib/Transforms/IPO/Attributor.cpp +++ b/llvm/lib/Transforms/IPO/Attributor.cpp @@ -998,14 +998,18 @@ ChangeStatus AAReturnedValuesImpl::manifest(Attributor &A) { if (CallBase *CB = dyn_cast<CallBase>(U.getUser())) if (CB->isCallee(&U)) { Constant *RVCCast = - ConstantExpr::getTruncOrBitCast(RVC, CB->getType()); + CB->getType() == RVC->getType() + ? RVC + : ConstantExpr::getTruncOrBitCast(RVC, CB->getType()); Changed = ReplaceCallSiteUsersWith(*CB, *RVCCast) | Changed; } } else { assert(isa<CallBase>(AnchorValue) && "Expcected a function or call base anchor!"); Constant *RVCCast = - ConstantExpr::getTruncOrBitCast(RVC, AnchorValue.getType()); + AnchorValue.getType() == RVC->getType() + ? RVC + : ConstantExpr::getTruncOrBitCast(RVC, AnchorValue.getType()); Changed = ReplaceCallSiteUsersWith(cast<CallBase>(AnchorValue), *RVCCast); } if (Changed == ChangeStatus::CHANGED) |

