Re-apply fixed "[Attributor] Fix: Make sure we set the changed flag"

This reverts commit cedd0d9a6e.

Re-apply the original commit but make sure the variables are initialized
(even if they are not used) so UBSan is not complaining.

llvm-svn: 369294
This commit is contained in:
Johannes Doerfert 2019-08-19 19:14:10 +00:00
parent 0f4e9835c9
commit 056f1b5cc7
1 changed files with 4 additions and 4 deletions

View File

@ -878,7 +878,7 @@ ChangeStatus AAReturnedValuesImpl::updateImpl(Attributor &A) {
// The map in which we collect return values -> return instrs. // The map in which we collect return values -> return instrs.
decltype(ReturnedValues) &RetValsMap; decltype(ReturnedValues) &RetValsMap;
// The flag to indicate a change. // The flag to indicate a change.
bool Changed; bool &Changed;
// The return instrs we come from. // The return instrs we come from.
SmallPtrSet<ReturnInst *, 2> RetInsts; SmallPtrSet<ReturnInst *, 2> RetInsts;
}; };
@ -906,9 +906,8 @@ ChangeStatus AAReturnedValuesImpl::updateImpl(Attributor &A) {
// Callback for all "return intructions" live in the associated function. // Callback for all "return intructions" live in the associated function.
auto CheckReturnInst = [this, &VisitReturnedValue, &Changed](Instruction &I) { auto CheckReturnInst = [this, &VisitReturnedValue, &Changed](Instruction &I) {
ReturnInst &Ret = cast<ReturnInst>(I); ReturnInst &Ret = cast<ReturnInst>(I);
RVState RVS({ReturnedValues, false, {}}); RVState RVS({ReturnedValues, Changed, {}});
RVS.RetInsts.insert(&Ret); RVS.RetInsts.insert(&Ret);
Changed |= RVS.Changed;
return VisitReturnedValue(*Ret.getReturnValue(), RVS); return VisitReturnedValue(*Ret.getReturnValue(), RVS);
}; };
@ -955,7 +954,8 @@ ChangeStatus AAReturnedValuesImpl::updateImpl(Attributor &A) {
if (Argument *Arg = dyn_cast<Argument>(RetVal)) { if (Argument *Arg = dyn_cast<Argument>(RetVal)) {
// Arguments are mapped to call site operands and we begin the traversal // Arguments are mapped to call site operands and we begin the traversal
// again. // again.
RVState RVS({NewRVsMap, false, RetValAAIt.second}); bool Unused = false;
RVState RVS({NewRVsMap, Unused, RetValAAIt.second});
VisitReturnedValue(*CB->getArgOperand(Arg->getArgNo()), RVS); VisitReturnedValue(*CB->getArgOperand(Arg->getArgNo()), RVS);
continue; continue;
} else if (isa<CallBase>(RetVal)) { } else if (isa<CallBase>(RetVal)) {