[PATCH] D25096: [RS4GC] New pass to remove gc.relocates added by RS4GC

Sanjoy Das via llvm-commits llvm-commits at lists.llvm.org
Fri Oct 21 10:26:09 PDT 2016


sanjoy accepted this revision.
sanjoy added a comment.
This revision is now accepted and ready to land.

lgtm with comments



================
Comment at: include/llvm/Transforms/Scalar.h:477
+// RewriteStatepointsForGC. The resulting IR is incorrect, but this is useful
+// for analysis
+FunctionPass *createStripGCRelocatesPass();
----------------
End with period.

Also I'd say "useful for manual inspection".  Analysis can also mean "llvm analysis".


================
Comment at: lib/Transforms/Utils/StripGCRelocates.cpp:11
+// This is a little utility pass that removes the gc.relocates inserted by
+// RewriteStatepointsForGC. Note that the generated IR would be incorrect,
+// but this is useful as a single pass in itself, for analysis of IR, without
----------------
s/would be incorrect,/is incorrect,/ sounds better


================
Comment at: lib/Transforms/Utils/StripGCRelocates.cpp:44
+bool StripGCRelocates::runOnFunction(Function &F) {
+
+  // Nothing to do for declarations.
----------------
I'd remove the blank line.


================
Comment at: lib/Transforms/Utils/StripGCRelocates.cpp:57
+  for (GCRelocateInst *GCRel : GCRelocates) {
+
+    // gc.relocates in landing pads are not bound to the statepoint token, these
----------------
Same here: I'd drop the blank line.


================
Comment at: lib/Transforms/Utils/StripGCRelocates.cpp:60
+    // are removed by a following instcombine pass.
+    if (!isStatepoint(GCRel->getOperand(0)))
+      continue;
----------------
Hm -- why is it okay for _instcombine_ to remove the relocates hanging off of landingpads?  In `@test3`, I suspect _instcombine_ is removing these because they aren't used, if they had real uses the landingpad relocates would still be around.

Also, if you avoid adding these landingpad gc relocates to the `GCRelocates` vector then instead of tracking `Changed`, you could just `return !GCRelocates.empty();`.


https://reviews.llvm.org/D25096





More information about the llvm-commits mailing list