From 2ede5dccffa5f62d3f13eca603bc3ad0e73b7514 Mon Sep 17 00:00:00 2001 From: Serguei Katkov Date: Tue, 31 Mar 2020 12:07:11 +0700 Subject: [PATCH] =?UTF-8?q?[DOC]=20Remove=20too=20strong=20restriction=20f?= =?UTF-8?q?or=20=E2=80=98llvm.experimental.gc.statepoint=E2=80=99=20Intrin?= =?UTF-8?q?sic?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 --- llvm/docs/Statepoints.rst | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/llvm/docs/Statepoints.rst b/llvm/docs/Statepoints.rst index 3832a43b287e..5d6033bc50a7 100644 --- a/llvm/docs/Statepoints.rst +++ b/llvm/docs/Statepoints.rst @@ -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