Index: llvm/trunk/lib/CodeGen/GlobalISel/IRTranslator.cpp =================================================================== --- llvm/trunk/lib/CodeGen/GlobalISel/IRTranslator.cpp +++ llvm/trunk/lib/CodeGen/GlobalISel/IRTranslator.cpp @@ -1108,6 +1108,11 @@ } case Intrinsic::invariant_end: return true; + case Intrinsic::assume: + case Intrinsic::var_annotation: + case Intrinsic::sideeffect: + // Discard annotate attributes, assumptions, and artificial side-effects. + return true; } return false; } Index: llvm/trunk/test/CodeGen/AArch64/GlobalISel/arm64-irtranslator.ll =================================================================== --- llvm/trunk/test/CodeGen/AArch64/GlobalISel/arm64-irtranslator.ll +++ llvm/trunk/test/CodeGen/AArch64/GlobalISel/arm64-irtranslator.ll @@ -2390,3 +2390,30 @@ %y = call float @llvm.rint.f32(float %x) ret float %y } + +declare void @llvm.assume(i1) +define void @test_assume(i1 %x) { + ; CHECK-LABEL: name: test_assume + ; CHECK-NOT: llvm.assume + ; CHECK: RET_ReallyLR + call void @llvm.assume(i1 %x) + ret void +} + +declare void @llvm.sideeffect() +define void @test_sideeffect() { + ; CHECK-LABEL: name: test_sideeffect + ; CHECK-NOT: llvm.sideeffect + ; CHECK: RET_ReallyLR + call void @llvm.sideeffect() + ret void +} + +declare void @llvm.var.annotation(i8*, i8*, i8*, i32) +define void @test_var_annotation(i8*, i8*, i8*, i32) { + ; CHECK-LABEL: name: test_var_annotation + ; CHECK-NOT: llvm.var.annotation + ; CHECK: RET_ReallyLR + call void @llvm.var.annotation(i8* %0, i8* %1, i8* %2, i32 %3) + ret void +}