-
Notifications
You must be signed in to change notification settings - Fork 4
Preprocessing Passes
Ziyang Xu edited this page May 31, 2021
·
1 revision
-
Devirtualization
- Statically devirtualize virtual functions
- Driver:
tests/scripts/devirtualize - Main passes:
-devirtualize - Main file:
lib/Devirt/Devirtualize.cpp
-
Internalization
- Functionality: internalize global symbols
- Driver: None
- Main passes:
-internalize -internalize-public-api-list=main -ipconstprop -ipsccp -deadargelim - Main file: None
-
(Optional) Aggressive Inlining
- Functionality: Aggressively inline functions in the hot functions
- Driver: None
- Main passes:
-lamp-inst-cnt -lamp-map-loop -lamp-load-profile -always-inline -aggr-inliner - Main file:
lib/AggrInliner/Inliner.cpp
-
Instruction naming
- Functionality: Name each instruction with a unique ID in Metadata
- Driver: None
- Main passes:
-metadata-namer - Main file: ./lib/Metadata/Namer.cpp
-
Other transformations before parallelizations:
- Functionality: LLVM passes that make loops more canonical or easier to parallelize
- Passes:
-mem2reg -simplifycfg -simplifycfg-sink-common=false -instcombine -tailcallelim -loop-simplify -lcssa -licm -loop-unswitch -globalopt -instcombine -ipsccp -gvn -dse -adce -loop-simplify -lcssa -indvars -loop-deletion -instcombine -indvars