[PATCH] Add a pass for inserting safepoints into (nearly) arbitrary IR

Andrew Trick atrick at apple.com
Mon Feb 2 11:14:06 PST 2015

In general, the code is structured well and easy to follow.

The most confusing aspect is the on-the-fly pass manager instantiation. It's not clear why you can't do all your "analysis" up front and just keep a side table keyed off LoopInfo. Then you shouldn't need to recompute Dominators, except maybe for assertions. LoopSimplify will just run on all loops before your pass begins. SCEV should not be managed with the pass manager anyway.

>From reading the comments in patch, the difference between "parse
point" and "statepoint" is unclear. (You may have explained it
elsewhere). I gather that "parse point" is an abstract runtime feature, and "statepoint" is the implementation of them via LLVM intrinsic?

You may want to run clang-format before checkin. It caught a few issues.

A comment isn't the best place for a question ;)

+    // Why the hell is inline ASM modeled as a call instruction?

<sp> substaintially

lib/Transforms/Scalar/PlaceSafepoints.cpp:217: suprisingly -> "surprisingly"
lib/Transforms/Scalar/PlaceSafepoints.cpp:218: occurances -> "occurrences"
lib/Transforms/Scalar/PlaceSafepoints.cpp:404: intial -> "initial"

I'm fine with getting this in-tree and iterating.



More information about the llvm-commits mailing list