1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-18 18:42:46 +02:00

[DOC] Remove too strong restriction for ‘llvm.experimental.gc.statepoint’ Intrinsic

The requirement for deopt parameter to be in gc parameter if it can
be modified by GC is very strong and difficult to follow.

The key example of why this can't work:
%p1 = bitcast i8* %p to i8*
statepoint [gc = (%p1)], [deopt = (%p1)]

The optimizer is allowed to replace either use (or both) of %p1 with %p.
If it updates only one of the two (entirely legal), the two sets do not overlap.

So this change removes the strong wording.

Reviewers: reames, dantrushin
Reviewed By: reames
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D77122
This commit is contained in:
Serguei Katkov 2020-03-31 12:07:11 +07:00
parent a7626e13c1
commit 649e920fc2

View File

@ -522,11 +522,8 @@ of the callee. The '# transition args' field indicates how many operands
are to be interpreted as 'transition parameters'.
The 'deopt parameters' arguments contain an arbitrary list of Values
which is meaningful to the runtime. The runtime may read any of these
values, but is assumed not to modify them. If the garbage collector
might need to modify one of these values, it must also be listed in
the 'gc pointer' argument list. The '# deopt args' field indicates
how many operands are to be interpreted as 'deopt parameters'.
which is meaningful to the runtime. The '# deopt args' field
indicates how many operands are to be interpreted as 'deopt parameters'.
The 'gc parameters' arguments contain every pointer to a garbage
collector object which potentially needs to be updated by the garbage