[llvm] r356353 - Remove immarg from llvm.expect
Matt Arsenault via llvm-commits
llvm-commits at lists.llvm.org
Sun Mar 17 16:16:19 PDT 2019
Author: arsenm
Date: Sun Mar 17 16:16:18 2019
New Revision: 356353
URL: http://llvm.org/viewvc/llvm-project?rev=356353&view=rev
Log:
Remove immarg from llvm.expect
The LangRef claimed this was required to be a constant, but this
appears to be wrong.
Fixes bug 41079.
Modified:
llvm/trunk/docs/LangRef.rst
llvm/trunk/include/llvm/IR/Intrinsics.td
llvm/trunk/test/Transforms/LowerExpectIntrinsic/PR33346.ll
llvm/trunk/test/Verifier/intrinsic-immarg.ll
Modified: llvm/trunk/docs/LangRef.rst
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/docs/LangRef.rst?rev=356353&r1=356352&r2=356353&view=diff
==============================================================================
--- llvm/trunk/docs/LangRef.rst (original)
+++ llvm/trunk/docs/LangRef.rst Sun Mar 17 16:16:18 2019
@@ -15819,8 +15819,7 @@ Arguments:
""""""""""
The ``llvm.expect`` intrinsic takes two arguments. The first argument is
-a value. The second argument is an expected value, this needs to be a
-constant value, variables are not allowed.
+a value. The second argument is an expected value.
Semantics:
""""""""""
Modified: llvm/trunk/include/llvm/IR/Intrinsics.td
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/IR/Intrinsics.td?rev=356353&r1=356352&r2=356353&view=diff
==============================================================================
--- llvm/trunk/include/llvm/IR/Intrinsics.td (original)
+++ llvm/trunk/include/llvm/IR/Intrinsics.td Sun Mar 17 16:16:18 2019
@@ -689,13 +689,13 @@ let IntrProperties = [IntrInaccessibleMe
llvm_metadata_ty ]>;
}
// FIXME: Add intrinsics for fcmp, fptrunc, fpext, fptoui and fptosi.
-// FIXME: Add intrinsics for fabs and copysign?
+// FIXME: Add intrinsics for fabs and copysign?
//===------------------------- Expect Intrinsics --------------------------===//
//
def int_expect : Intrinsic<[llvm_anyint_ty],
- [LLVMMatchType<0>, LLVMMatchType<0>], [IntrNoMem, ImmArg<1>]>;
+ [LLVMMatchType<0>, LLVMMatchType<0>], [IntrNoMem]>;
//===-------------------- Bit Manipulation Intrinsics ---------------------===//
//
Modified: llvm/trunk/test/Transforms/LowerExpectIntrinsic/PR33346.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/LowerExpectIntrinsic/PR33346.ll?rev=356353&r1=356352&r2=356353&view=diff
==============================================================================
--- llvm/trunk/test/Transforms/LowerExpectIntrinsic/PR33346.ll (original)
+++ llvm/trunk/test/Transforms/LowerExpectIntrinsic/PR33346.ll Sun Mar 17 16:16:18 2019
@@ -7,12 +7,12 @@ bb:
store i64 %arg, i64* %tmp, align 8
%tmp1 = load i64, i64* %tmp, align 8
%tmp2 = load i64, i64* %tmp, align 8
- %tmp3 = call i64 @llvm.expect.i64(i64 %tmp1, i64 123)
+ %tmp3 = call i64 @llvm.expect.i64(i64 %tmp1, i64 %tmp2)
ret i64 %tmp3
}
; Function Attrs: nounwind readnone
-declare i64 @llvm.expect.i64(i64, i64 immarg)
+declare i64 @llvm.expect.i64(i64, i64)
!llvm.module.flags = !{!0}
Modified: llvm/trunk/test/Verifier/intrinsic-immarg.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Verifier/intrinsic-immarg.ll?rev=356353&r1=356352&r2=356353&view=diff
==============================================================================
--- llvm/trunk/test/Verifier/intrinsic-immarg.ll (original)
+++ llvm/trunk/test/Verifier/intrinsic-immarg.ll Sun Mar 17 16:16:18 2019
@@ -65,15 +65,6 @@ define void @objectsize(i8* %ptr, i1 %a,
ret void
}
-declare i8 @llvm.expect.i8(i8, i8)
-define i8 @expect(i8 %arg0, i8 %arg1) {
- ; CHECK: immarg operand has non-immediate parameter
- ; CHECK-NEXT: i8 %arg1
- ; CHECK-NEXT: %ret = call i8 @llvm.expect.i8(i8 %arg0, i8 %arg1)
- %ret = call i8 @llvm.expect.i8(i8 %arg0, i8 %arg1)
- ret i8 %ret
-}
-
declare i64 @llvm.smul.fix.i64(i64, i64, i32)
define i64 @smul_fix(i64 %arg0, i64 %arg1, i32 %arg2) {
; CHECK: immarg operand has non-immediate parameter
More information about the llvm-commits
mailing list