Skip to content

Commit 1bd9c65

Browse files
committed
ARM: Fix missing immarg for space intrinsic
llvm-svn: 366280
1 parent 1c3f4ec commit 1bd9c65

File tree

2 files changed

+10
-1
lines changed

2 files changed

+10
-1
lines changed

llvm/include/llvm/IR/IntrinsicsARM.td

+1-1
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ let TargetPrefix = "arm" in { // All intrinsics start with "llvm.arm.".
1919
// A space-consuming intrinsic primarily for testing ARMConstantIslands. The
2020
// first argument is the number of bytes this "instruction" takes up, the second
2121
// and return value are essentially chains, used to force ordering during ISel.
22-
def int_arm_space : Intrinsic<[llvm_i32_ty], [llvm_i32_ty, llvm_i32_ty], []>;
22+
def int_arm_space : Intrinsic<[llvm_i32_ty], [llvm_i32_ty, llvm_i32_ty], [ImmArg<0>]>;
2323

2424
// 16-bit multiplications
2525
def int_arm_smulbb : GCCBuiltin<"__builtin_arm_smulbb">,

llvm/test/Verifier/ARM/intrinsic-immarg.ll

+9
Original file line numberDiff line numberDiff line change
@@ -100,3 +100,12 @@ define void @mcrr2(i32 %arg0, i32 %arg1, i32 %arg2, i32 %arg3, i32 %arg4) {
100100
call void @llvm.arm.mcrr2(i32 0, i32 1, i32 2, i32 3, i32 %arg4)
101101
ret void
102102
}
103+
104+
declare i32 @llvm.arm.space(i32, i32) nounwind
105+
define i32 @space(i32 %arg0, i32 %arg1) {
106+
; CHECK: immarg operand has non-immediate parameter
107+
; CHECK-NEXT: i32 %arg0
108+
; CHECK-NEXT: call i32 @llvm.arm.space(i32 %arg0, i32 %arg1)
109+
%space = call i32 @llvm.arm.space(i32 %arg0, i32 %arg1)
110+
ret i32 %space
111+
}

0 commit comments

Comments
 (0)