From 14335835f1b9b7947085fdeee96ff82b574f5f67 Mon Sep 17 00:00:00 2001 From: "Vikram S. Adve" Date: Tue, 28 Aug 2001 23:23:14 +0000 Subject: [PATCH] Add calls to NormalizeMethod() and to ScheduleInstructionsWithSSA(). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@404 91177308-0d34-0410-b5e6-96231b3b80d8 --- tools/llc/llc.cpp | 56 +++++++++++++++++++++++++++++++++++------------ 1 file changed, 42 insertions(+), 14 deletions(-) diff --git a/tools/llc/llc.cpp b/tools/llc/llc.cpp index a3312967d64..7bf820f9f0e 100644 --- a/tools/llc/llc.cpp +++ b/tools/llc/llc.cpp @@ -14,47 +14,75 @@ #include "llvm/Module.h" #include "llvm/Method.h" #include "llvm/Bytecode/Reader.h" +#include "llvm/Optimizations/Normalize.h" #include "llvm/CodeGen/InstrSelection.h" +#include "llvm/CodeGen/InstrScheduling.h" #include "llvm/CodeGen/Sparc.h" #include "llvm/Support/CommandLine.h" cl::String InputFilename ("", "Input filename", cl::NoFlags, "-"); cl::String OutputFilename("o", "Output filename", cl::NoFlags, ""); -static bool CompileModule(Module *M, TargetMachine &Target) { + +void +NormalizeMethod(Method* method) +{ + NormalizePhiConstantArgs(method); +} + + +static bool +CompileModule(Module *M, TargetMachine &target) +{ bool failed = false; - for (Module::const_iterator MI = M->begin(), ME = M->end(); MI != ME; ++MI) { - Method * method = *MI; + for (Module::const_iterator MI = M->begin(), ME = M->end(); MI != ME; ++MI) + { + Method* method = *MI; + + NormalizeMethod(method); - if (SelectInstructionsForMethod(method, Target)) { - failed = true; - cerr << "Instruction selection failed for method " - << method->getName() << "\n\n"; + failed = SelectInstructionsForMethod(method, target); + if (failed) + { + cerr << "Instruction selection failed for method " + << method->getName() << "\n\n"; + break; + } + + failed = ScheduleInstructionsWithSSA(method, target); + if (failed) + { + cerr << "Instruction scheduling before allocation failed for method " + << method->getName() << "\n\n"; + break; + } } - } return failed; } + //--------------------------------------------------------------------------- // Function main() // -// Entry point for the driver. +// Entry point for the llc compiler. //--------------------------------------------------------------------------- -int main(int argc, char** argv) { +int +main(int argc, char** argv) +{ cl::ParseCommandLineOptions(argc, argv, " llvm system compiler\n"); - UltraSparc Target; - + UltraSparc target; + Module *module = ParseBytecodeFile(InputFilename); if (module == 0) { cerr << "bytecode didn't read correctly.\n"; return 1; } - - if (CompileModule(module, Target)) { + + if (CompileModule(module, target)) { cerr << "Error compiling " << InputFilename << "!\n"; delete module; return 1; -- 2.34.1