Add a stand-alone generic specializer pass.

Begin unbundling devirtualization, specialization, and inlining by
recreating the stand-alone generic specializer pass.

I've added a use of the pass to the pipeline, but this is almost
certainly not going to be the final location of where it runs. It's
primarily there to ensure this code gets exercised.

Since this is running prior to inlining, it changes the order that some
functions are specialized in, which means differences in the order of
output of one of the tests (one which similarly changed when
devirtualization, specialization, and inlining were bundled together).
This commit is contained in:
Mark Lacey
2015-12-14 13:04:42 -08:00
parent dbde7cc4c1
commit faba6e56b7
8 changed files with 227 additions and 109 deletions

View File

@@ -104,6 +104,8 @@ PASS(RedundantLoadElimination, "redundant-load-elim",
"Multiple basic block redundant load elimination")
PASS(DeadStoreElimination, "dead-store-elim",
"Multiple basic block dead store elimination")
PASS(GenericSpecializer, "generic-specializer",
"Specialization of generic functions by static types")
PASS(GlobalOpt, "global-opt",
"Global variable optimizations")
PASS(GlobalPropertyOpt, "global-property-opt",