diff --git a/llvm/lib/Analysis/ScalarEvolution.cpp b/llvm/lib/Analysis/ScalarEvolution.cpp --- a/llvm/lib/Analysis/ScalarEvolution.cpp +++ b/llvm/lib/Analysis/ScalarEvolution.cpp @@ -7625,8 +7625,9 @@ return getAddExpr(ClampedX, Y, SCEV::FlagNUW); } case Intrinsic::start_loop_iterations: - // A start_loop_iterations is just equivalent to the first operand for - // SCEV purposes. + case Intrinsic::annotation: + // A start_loop_iterations or llvm.annotation is just equivalent to the + // first operand for SCEV purposes. return getSCEV(II->getArgOperand(0)); default: break; diff --git a/llvm/test/Analysis/ScalarEvolution/annotation-intrinsics.ll b/llvm/test/Analysis/ScalarEvolution/annotation-intrinsics.ll --- a/llvm/test/Analysis/ScalarEvolution/annotation-intrinsics.ll +++ b/llvm/test/Analysis/ScalarEvolution/annotation-intrinsics.ll @@ -7,7 +7,7 @@ ; CHECK-LABEL: 'annotatioin' ; CHECK-NEXT: Classifying expressions for: @annotatioin ; CHECK-NEXT: %1 = tail call i64 @llvm.annotation.i64(i64 %x, i8* null, i8* null, i32 0) -; CHECK-NEXT: --> %1 U: full-set S: full-set +; CHECK-NEXT: --> %x U: full-set S: full-set ; CHECK-NEXT: Determining loop execution counts for: @annotatioin ; %1 = tail call i64 @llvm.annotation.i64(i64 %x, i8* null, i8* null, i32 0)