diff --git a/tools/gccas/gccas.cpp b/tools/gccas/gccas.cpp index db99cbf268d..6b1d33a5c98 100644 --- a/tools/gccas/gccas.cpp +++ b/tools/gccas/gccas.cpp @@ -10,7 +10,10 @@ #include "llvm/Module.h" #include "llvm/Assembly/Parser.h" #include "llvm/Transforms/CleanupGCCOutput.h" +#include "llvm/Optimizations/LevelChange.h" +#include "llvm/Optimizations/ConstantProp.h" #include "llvm/Optimizations/DCE.h" +#include "llvm/Transforms/ConstantMerge.h" #include "llvm/Bytecode/Writer.h" #include "llvm/Support/CommandLine.h" #include @@ -60,8 +63,11 @@ int main(int argc, char **argv) { // a little bit. Do this now. // vector Passes; - Passes.push_back(new CleanupGCCOutput()); - Passes.push_back(new opt::DeadCodeElimination()); + Passes.push_back(new CleanupGCCOutput()); // Fix gccisms + Passes.push_back(new opt::RaiseRepresentation());// Fix general low level code + Passes.push_back(new opt::ConstantPropogation());// Trivial const prop + Passes.push_back(new opt::DeadCodeElimination());// Trivial DCE + Passes.push_back(new ConstantMerge()); // Merge dup global constants // Run our queue of passes all at once now, efficiently. This form of // runAllPasses frees the Pass objects after runAllPasses completes.