Mark gc.relocate and gc.result as readnone (try 2)

As noted in the LangRef, these are semantically readnone projections from the result value of the associated statepoint. However, it turned out we had a few latent bugs being covered up by the fact we were only marking them readonly (see PR49607 for context).

As of this change, all known issues are resolved. This is a deliberately minimal patch to make it easy to test downstream and revert with minimal change if that turns out to be necessary.

Differential Revision: https://reviews.llvm.org/D98729
This commit is contained in:
Philip Reames
2021-03-25 14:50:07 -07:00
parent e7ebb87222
commit 4f5e92cc05

View File

@@ -1183,11 +1183,11 @@ def int_experimental_gc_statepoint : Intrinsic<[llvm_token_ty],
ImmArg<ArgIndex<4>>]>;
def int_experimental_gc_result : Intrinsic<[llvm_any_ty], [llvm_token_ty],
[IntrReadMem]>;
[IntrNoMem]>;
def int_experimental_gc_relocate : Intrinsic<[llvm_any_ty],
[llvm_token_ty, llvm_i32_ty,
llvm_i32_ty],
[IntrReadMem, ImmArg<ArgIndex<1>>,
[IntrNoMem, ImmArg<ArgIndex<1>>,
ImmArg<ArgIndex<2>>]>;
//===------------------------ Coroutine Intrinsics ---------------===//