[PATCH] D77036: [CodeGen] Fix isGCValue utility for statepoint lowering
    Philip Reames via Phabricator via llvm-commits 
    llvm-commits at lists.llvm.org
       
    Mon Mar 30 10:49:47 PDT 2020
    
    
  
reames requested changes to this revision.
reames added a comment.
This revision now requires changes to proceed.
Er, I think the specification simplify needs changed here.  As we've discussed offline, it's impossible to enforce having a gc pointer in the deopt list always be in the gc list (in any form).  This was a flaw in the specification from the begging and we should fix the docs, not try to hack up the code to preserve it a bit longer.
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.
If we need to enforce a property for GC values within deopt list, we should directly use the type of the pointer in question.  Anything else appears unsound.
CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D77036/new/
https://reviews.llvm.org/D77036
    
    
More information about the llvm-commits
mailing list