Skip to content

Commit 67ada5c

Browse files
committed
fix rtn case
1 parent 6ace5cd commit 67ada5c

File tree

2 files changed

+18
-19
lines changed

2 files changed

+18
-19
lines changed

llvm/include/llvm/IR/IntrinsicsAMDGPU.td

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -246,7 +246,7 @@ def int_amdgcn_s_sendmsghalt : ClangBuiltin<"__builtin_amdgcn_s_sendmsghalt">,
246246
// gfx11 intrinsic
247247
// The first parameter is s_sendmsg immediate (i16). Return type is i32 or i64.
248248
def int_amdgcn_s_sendmsg_rtn : Intrinsic <[llvm_anyint_ty], [llvm_i32_ty],
249-
[ImmArg<ArgIndex<0>>, IntrNoMem, IntrHasSideEffects, IntrWillReturn, IntrNoRecurse]>;
249+
[ImmArg<ArgIndex<0>>, IntrNoMem, IntrHasSideEffects, IntrWillReturn, IntrNoCallback]>;
250250

251251
// Vanilla workgroup sync-barrier
252252
def int_amdgcn_s_barrier : ClangBuiltin<"__builtin_amdgcn_s_barrier">,

llvm/test/Transforms/FunctionAttrs/sendmsg-nocallback.ll

Lines changed: 17 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22
; RUN: opt -S -passes=function-attrs < %s | FileCheck --check-prefixes=COMMON,FNATTRS %s
33
; RUN: opt -S -passes=attributor-light < %s | FileCheck --check-prefixes=COMMON,ATTRIBUTOR %s
44

5+
; Make sure norecurse is inferred on the calling functions
6+
57
define internal void @sendmsg_is_norecurse() {
68
; FNATTRS: Function Attrs: mustprogress norecurse nounwind willreturn
79
; FNATTRS-LABEL: define internal void @sendmsg_is_norecurse(
@@ -12,7 +14,7 @@ define internal void @sendmsg_is_norecurse() {
1214
; ATTRIBUTOR: Function Attrs: mustprogress norecurse nounwind willreturn
1315
; ATTRIBUTOR-LABEL: define internal void @sendmsg_is_norecurse(
1416
; ATTRIBUTOR-SAME: ) #[[ATTR0:[0-9]+]] {
15-
; ATTRIBUTOR-NEXT: call void @llvm.amdgcn.s.sendmsg(i32 1, i32 0) #[[ATTR7:[0-9]+]]
17+
; ATTRIBUTOR-NEXT: call void @llvm.amdgcn.s.sendmsg(i32 1, i32 0) #[[ATTR4:[0-9]+]]
1618
; ATTRIBUTOR-NEXT: ret void
1719
;
1820
call void @llvm.amdgcn.s.sendmsg(i32 1, i32 0)
@@ -37,10 +39,10 @@ define internal i32 @sendmsg_rtn_is_norecurse() {
3739
; FNATTRS-NEXT: [[RES:%.*]] = call i32 @llvm.amdgcn.s.sendmsg.rtn.i32(i32 1)
3840
; FNATTRS-NEXT: ret i32 [[RES]]
3941
;
40-
; ATTRIBUTOR: Function Attrs: mustprogress nounwind willreturn
42+
; ATTRIBUTOR: Function Attrs: mustprogress norecurse nounwind willreturn
4143
; ATTRIBUTOR-LABEL: define internal i32 @sendmsg_rtn_is_norecurse(
42-
; ATTRIBUTOR-SAME: ) #[[ATTR2:[0-9]+]] {
43-
; ATTRIBUTOR-NEXT: [[RES:%.*]] = call i32 @llvm.amdgcn.s.sendmsg.rtn.i32(i32 1) #[[ATTR7]]
44+
; ATTRIBUTOR-SAME: ) #[[ATTR0]] {
45+
; ATTRIBUTOR-NEXT: [[RES:%.*]] = call i32 @llvm.amdgcn.s.sendmsg.rtn.i32(i32 1) #[[ATTR4]]
4446
; ATTRIBUTOR-NEXT: ret i32 [[RES]]
4547
;
4648
%res = call i32 @llvm.amdgcn.s.sendmsg.rtn(i32 1)
@@ -54,12 +56,12 @@ define void @user() {
5456
; FNATTRS-NEXT: call void @sendmsg_rtn_is_norecurse()
5557
; FNATTRS-NEXT: ret void
5658
;
57-
; ATTRIBUTOR: Function Attrs: nounwind
59+
; ATTRIBUTOR: Function Attrs: norecurse nounwind
5860
; ATTRIBUTOR-LABEL: define void @user(
59-
; ATTRIBUTOR-SAME: ) #[[ATTR3:[0-9]+]] {
60-
; ATTRIBUTOR-NEXT: call void @sendmsg_is_norecurse() #[[ATTR8:[0-9]+]]
61-
; ATTRIBUTOR-NEXT: call void @sendmsghalt_is_norecurse() #[[ATTR3]]
62-
; ATTRIBUTOR-NEXT: call void @sendmsg_rtn_is_norecurse() #[[ATTR3]]
61+
; ATTRIBUTOR-SAME: ) #[[ATTR1]] {
62+
; ATTRIBUTOR-NEXT: call void @sendmsg_is_norecurse() #[[ATTR5:[0-9]+]]
63+
; ATTRIBUTOR-NEXT: call void @sendmsghalt_is_norecurse() #[[ATTR6:[0-9]+]]
64+
; ATTRIBUTOR-NEXT: call void @sendmsg_rtn_is_norecurse() #[[ATTR6]]
6365
; ATTRIBUTOR-NEXT: ret void
6466
;
6567
call void @sendmsg_is_norecurse()
@@ -71,16 +73,13 @@ define void @user() {
7173
; FNATTRS: attributes #[[ATTR0]] = { mustprogress norecurse nounwind willreturn }
7274
; FNATTRS: attributes #[[ATTR1]] = { norecurse nounwind }
7375
; FNATTRS: attributes #[[ATTR2:[0-9]+]] = { nocallback nounwind willreturn }
74-
; FNATTRS: attributes #[[ATTR3:[0-9]+]] = { norecurse nounwind willreturn }
75-
; FNATTRS: attributes #[[ATTR4:[0-9]+]] = { nocallback nounwind }
76+
; FNATTRS: attributes #[[ATTR3:[0-9]+]] = { nocallback nounwind }
7677
;.
7778
; ATTRIBUTOR: attributes #[[ATTR0]] = { mustprogress norecurse nounwind willreturn }
7879
; ATTRIBUTOR: attributes #[[ATTR1]] = { norecurse nounwind }
79-
; ATTRIBUTOR: attributes #[[ATTR2]] = { mustprogress nounwind willreturn }
80-
; ATTRIBUTOR: attributes #[[ATTR3]] = { nounwind }
81-
; ATTRIBUTOR: attributes #[[ATTR4:[0-9]+]] = { nocallback nounwind willreturn }
82-
; ATTRIBUTOR: attributes #[[ATTR5:[0-9]+]] = { norecurse nounwind willreturn }
83-
; ATTRIBUTOR: attributes #[[ATTR6:[0-9]+]] = { nocallback nounwind }
84-
; ATTRIBUTOR: attributes #[[ATTR7]] = { willreturn }
85-
; ATTRIBUTOR: attributes #[[ATTR8]] = { nounwind willreturn }
80+
; ATTRIBUTOR: attributes #[[ATTR2:[0-9]+]] = { nocallback nounwind willreturn }
81+
; ATTRIBUTOR: attributes #[[ATTR3:[0-9]+]] = { nocallback nounwind }
82+
; ATTRIBUTOR: attributes #[[ATTR4]] = { willreturn }
83+
; ATTRIBUTOR: attributes #[[ATTR5]] = { nounwind willreturn }
84+
; ATTRIBUTOR: attributes #[[ATTR6]] = { nounwind }
8685
;.

0 commit comments

Comments
 (0)