Index: llvm/include/llvm/IR/Intrinsics.td =================================================================== --- llvm/include/llvm/IR/Intrinsics.td +++ llvm/include/llvm/IR/Intrinsics.td @@ -1248,21 +1248,20 @@ ImmArg>, ImmArg>, ImmArg>]>; -def int_experimental_gc_result : Intrinsic<[llvm_any_ty], [llvm_token_ty], - [IntrNoMem]>; -def int_experimental_gc_relocate : Intrinsic<[llvm_any_ty], - [llvm_token_ty, llvm_i32_ty, - llvm_i32_ty], - [IntrNoMem, ImmArg>, - ImmArg>]>; - -def int_experimental_gc_get_pointer_base : Intrinsic<[llvm_anyptr_ty], - [llvm_anyptr_ty], [IntrNoMem, IntrWillReturn, - ReadNone>, NoCapture>]>; - -def int_experimental_gc_get_pointer_offset : Intrinsic<[llvm_i64_ty], - [llvm_anyptr_ty], [IntrNoMem, IntrWillReturn, - ReadNone>, NoCapture>]>; +def int_experimental_gc_result : DefaultAttrsIntrinsic< + [llvm_any_ty], [llvm_token_ty], [IntrNoMem]>; + +def int_experimental_gc_relocate : DefaultAttrsIntrinsic< + [llvm_any_ty], [llvm_token_ty, llvm_i32_ty, llvm_i32_ty], + [IntrNoMem, ImmArg>, ImmArg>]>; + +def int_experimental_gc_get_pointer_base : DefaultAttrsIntrinsic< + [llvm_anyptr_ty], [llvm_anyptr_ty], + [IntrNoMem, IntrWillReturn, ReadNone>, NoCapture>]>; + +def int_experimental_gc_get_pointer_offset : DefaultAttrsIntrinsic< + [llvm_i64_ty], [llvm_anyptr_ty], + [IntrNoMem, IntrWillReturn, ReadNone>, NoCapture>]>; //===------------------------ Coroutine Intrinsics ---------------===// // These are documented in docs/Coroutines.rst Index: llvm/test/Transforms/RewriteStatepointsForGC/statepoint-attrs.ll =================================================================== --- llvm/test/Transforms/RewriteStatepointsForGC/statepoint-attrs.ll +++ llvm/test/Transforms/RewriteStatepointsForGC/statepoint-attrs.ll @@ -20,6 +20,6 @@ attributes #1 = { norecurse noimplicitfloat } ;. -; CHECK: attributes #[[ATTR0:[0-9]+]] = { nounwind readnone } +; CHECK: attributes #[[ATTR0:[0-9]+]] = { nocallback nofree nosync nounwind readnone willreturn } ; CHECK: attributes #[[ATTR1]] = { noimplicitfloat norecurse } ;.