diff options
Diffstat (limited to 'llvm/lib/Transforms/Scalar/AlignmentFromAssumptions.cpp')
| -rw-r--r-- | llvm/lib/Transforms/Scalar/AlignmentFromAssumptions.cpp | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/llvm/lib/Transforms/Scalar/AlignmentFromAssumptions.cpp b/llvm/lib/Transforms/Scalar/AlignmentFromAssumptions.cpp index be21db9087d2..e4ec5f266eb8 100644 --- a/llvm/lib/Transforms/Scalar/AlignmentFromAssumptions.cpp +++ b/llvm/lib/Transforms/Scalar/AlignmentFromAssumptions.cpp @@ -221,6 +221,10 @@ bool AlignmentFromAssumptionsPass::extractAlignmentInfo(CallInst *I, AAPtr = AAPtr->stripPointerCastsSameRepresentation(); AlignSCEV = SE->getSCEV(AlignOB.Inputs[1].get()); AlignSCEV = SE->getTruncateOrZeroExtend(AlignSCEV, Int64Ty); + if (!isa<SCEVConstant>(AlignSCEV)) + // Added to suppress a crash because consumer doesn't expect non-constant + // alignments in the assume bundle. TODO: Consider generalizing caller. + return false; if (AlignOB.Inputs.size() == 3) OffSCEV = SE->getSCEV(AlignOB.Inputs[2].get()); else |
