@@ -2959,11 +2959,11 @@ ChangeStatus AAExecutionDomainFunction::updateImpl(Attributor &A) {
2959
2959
} else {
2960
2960
// For live non-entry blocks we only propagate
2961
2961
// information via live edges.
2962
- if (LivenessAA->isAssumedDead (&BB))
2962
+ if (LivenessAA && LivenessAA ->isAssumedDead (&BB))
2963
2963
continue ;
2964
2964
2965
2965
for (auto *PredBB : predecessors (&BB)) {
2966
- if (LivenessAA->isEdgeDead (PredBB, &BB))
2966
+ if (LivenessAA && LivenessAA ->isEdgeDead (PredBB, &BB))
2967
2967
continue ;
2968
2968
bool InitialEdgeOnly = isInitialThreadOnlyEdge (
2969
2969
A, dyn_cast<BranchInst>(PredBB->getTerminator ()), BB);
@@ -3059,10 +3059,10 @@ ChangeStatus AAExecutionDomainFunction::updateImpl(Attributor &A) {
3059
3059
// alignment.
3060
3060
Function *Callee = CB->getCalledFunction ();
3061
3061
if (!IsNoSync && Callee && !Callee->isDeclaration ()) {
3062
- const auto & EDAA = * A.getAAFor <AAExecutionDomain>(
3062
+ const auto * EDAA = A.getAAFor <AAExecutionDomain>(
3063
3063
*this , IRPosition::function (*Callee), DepClassTy::OPTIONAL);
3064
- if (EDAA. getState ().isValidState ()) {
3065
- const auto &CalleeED = EDAA. getFunctionExecutionDomain ();
3064
+ if (EDAA && EDAA-> getState ().isValidState ()) {
3065
+ const auto &CalleeED = EDAA-> getFunctionExecutionDomain ();
3066
3066
ED.IsReachedFromAlignedBarrierOnly =
3067
3067
CalleeED.IsReachedFromAlignedBarrierOnly ;
3068
3068
AlignedBarrierLastInBlock = ED.IsReachedFromAlignedBarrierOnly ;
@@ -3189,7 +3189,7 @@ ChangeStatus AAExecutionDomainFunction::updateImpl(Attributor &A) {
3189
3189
continue ;
3190
3190
BasicBlock *SyncBB = SyncInst->getParent ();
3191
3191
for (auto *PredBB : predecessors (SyncBB)) {
3192
- if (LivenessAA->isEdgeDead (PredBB, SyncBB))
3192
+ if (LivenessAA && LivenessAA ->isEdgeDead (PredBB, SyncBB))
3193
3193
continue ;
3194
3194
if (!Visited.insert (PredBB))
3195
3195
continue ;
0 commit comments