summaryrefslogtreecommitdiff
path: root/tools/gccas
diff options
context:
space:
mode:
Diffstat (limited to 'tools/gccas')
-rw-r--r--tools/gccas/gccas.cpp6
1 files changed, 6 insertions, 0 deletions
diff --git a/tools/gccas/gccas.cpp b/tools/gccas/gccas.cpp
index c7a2204e32..0ed58b97db 100644
--- a/tools/gccas/gccas.cpp
+++ b/tools/gccas/gccas.cpp
@@ -70,6 +70,12 @@ void AddConfiguredTransformationPasses(PassManager &PM) {
addPass(PM, createFunctionInliningPass()); // Inline small functions
addPass(PM, createInstructionCombiningPass()); // Cleanup code for raise
+
+ // HACK HACK HACK. This pass should be extended to support calls like 'call
+ // (const expr cast (free))(Ty *). Until it does so, we have to run it after
+ // instruction combining. This should be removed after PLDI!
+ addPass(PM, createRaiseAllocationsPass()); // call %malloc -> malloc inst
+
addPass(PM, createRaisePointerReferencesPass());// Recover type information
addPass(PM, createTailDuplicationPass()); // Simplify cfg by copying code
addPass(PM, createCFGSimplificationPass()); // Merge & remove BBs