diff --git a/llvm/lib/Analysis/BasicAliasAnalysis.cpp b/llvm/lib/Analysis/BasicAliasAnalysis.cpp --- a/llvm/lib/Analysis/BasicAliasAnalysis.cpp +++ b/llvm/lib/Analysis/BasicAliasAnalysis.cpp @@ -1293,6 +1293,8 @@ AliasResult BasicAAResult::aliasPHI(const PHINode *PN, LocationSize PNSize, const Value *V2, LocationSize V2Size, AAQueryInfo &AAQI) { + if (!PN->getNumIncomingValues()) + return AliasResult::NoAlias; // If the values are PHIs in the same block, we can do a more precise // as well as efficient check: just check for aliases between the values // on corresponding edges. diff --git a/llvm/test/Transforms/JumpThreading/aa-crash-phi-no-args.ll b/llvm/test/Transforms/JumpThreading/aa-crash-phi-no-args.ll --- a/llvm/test/Transforms/JumpThreading/aa-crash-phi-no-args.ll +++ b/llvm/test/Transforms/JumpThreading/aa-crash-phi-no-args.ll @@ -1,4 +1,3 @@ -; XFAIL: * ; REQUIRES: asserts ; RUN: opt -jump-threading -aa-pipeline basic-aa -S -disable-output %s ; RUN: opt -passes=jump-threading -aa-pipeline basic-aa -S -disable-output %s