[RS4GC] Remove the hardcoded GC strategy names (v2)
Previously, RewriteStatepointsForGC had a hardcoded list of GC strategies for which it would run, and using it with a custom strategy required patching LLVM. The logic for selecting the variables that are considered managed was also hardcoded to use pointers in address space 1, rather than delegating to GCStrategy::isGCManagedPointer. This patch fixes both of these flaws: this pass now applies to all functions whose GCStrategy returns true for useStatepoints, and checking if a pointer is managed or not is also now done by the strategy. One potentially questionable design decision in this change: the pass will be enabled for all GC strategies that use statepoints. It seems unlikely this would be a problem - consumers that don't use this pass probably aren't adding it to the pass manager anyway - but if you had two different GC strategies and only one wants this pass enabled then that'd need a new flag in GCStrategy, which I can add if anyone thinks it's necessary. This is an updated version of D140458, rebased to account for LLVM's changes since D140504 (required by this patch) landed. Reviewed By: dantrushin Differential Revision: https://reviews.llvm.org/D141110
Loading
Please sign in to comment