[llvm-commits] [llvm] r40123 - in /llvm/trunk: include/llvm/Target/TargetMachine.h lib/CodeGen/LLVMTargetMachine.cpp lib/Target/ARM/ARMTargetMachine.cpp lib/Target/ARM/ARMTargetMachine.h lib/Target/Alpha/AlphaTargetMachine.cpp lib/Target/Alpha/AlphaTargetMachine.h lib/Target/PowerPC/PPCTargetMachine.cpp lib/Target/PowerPC/PPCTargetMachine.h lib/Target/X86/X86TargetMachine.cpp lib/Target/X86/X86TargetMachine.h

Evan Cheng evan.cheng at apple.com
Fri Jul 20 14:56:13 PDT 2007


Author: evancheng
Date: Fri Jul 20 16:56:13 2007
New Revision: 40123

URL: http://llvm.org/viewvc/llvm-project?rev=40123&view=rev
Log:
Added -print-emitted-asm to print out JIT generated asm to cerr.

Modified:
    llvm/trunk/include/llvm/Target/TargetMachine.h
    llvm/trunk/lib/CodeGen/LLVMTargetMachine.cpp
    llvm/trunk/lib/Target/ARM/ARMTargetMachine.cpp
    llvm/trunk/lib/Target/ARM/ARMTargetMachine.h
    llvm/trunk/lib/Target/Alpha/AlphaTargetMachine.cpp
    llvm/trunk/lib/Target/Alpha/AlphaTargetMachine.h
    llvm/trunk/lib/Target/PowerPC/PPCTargetMachine.cpp
    llvm/trunk/lib/Target/PowerPC/PPCTargetMachine.h
    llvm/trunk/lib/Target/X86/X86TargetMachine.cpp
    llvm/trunk/lib/Target/X86/X86TargetMachine.h

Modified: llvm/trunk/include/llvm/Target/TargetMachine.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Target/TargetMachine.h?rev=40123&r1=40122&r2=40123&view=diff

==============================================================================
--- llvm/trunk/include/llvm/Target/TargetMachine.h (original)
+++ llvm/trunk/include/llvm/Target/TargetMachine.h Fri Jul 20 16:56:13 2007
@@ -306,17 +306,18 @@
   
   /// addCodeEmitter - This pass should be overridden by the target to add a
   /// code emitter, if supported.  If this is not supported, 'true' should be
-  /// returned.
-  virtual bool addCodeEmitter(FunctionPassManager &PM, bool Fast, 
+  /// returned. If DumpAsm is true, the generated assembly is printed to cerr.
+  virtual bool addCodeEmitter(FunctionPassManager &PM, bool Fast, bool DumpAsm,
                               MachineCodeEmitter &MCE) {
     return true;
   }
 
   /// addSimpleCodeEmitter - This pass should be overridden by the target to add
   /// a code emitter (without setting flags), if supported.  If this is not
-  /// supported, 'true' should be returned.
+  /// supported, 'true' should be returned.  If DumpAsm is true, the generated
+  /// assembly is printed to cerr.
   virtual bool addSimpleCodeEmitter(FunctionPassManager &PM, bool Fast, 
-                                    MachineCodeEmitter &MCE) {
+                                    bool DumpAsm, MachineCodeEmitter &MCE) {
     return true;
   }
 

Modified: llvm/trunk/lib/CodeGen/LLVMTargetMachine.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/LLVMTargetMachine.cpp?rev=40123&r1=40122&r2=40123&view=diff

==============================================================================
--- llvm/trunk/lib/CodeGen/LLVMTargetMachine.cpp (original)
+++ llvm/trunk/lib/CodeGen/LLVMTargetMachine.cpp Fri Jul 20 16:56:13 2007
@@ -26,6 +26,8 @@
     cl::desc("Print LLVM IR produced by the loop-reduce pass"));
 static cl::opt<bool> PrintISelInput("print-isel-input", cl::Hidden,
     cl::desc("Print LLVM IR input to isel pass"));
+static cl::opt<bool> PrintEmittedAsm("print-emitted-asm", cl::Hidden,
+    cl::desc("Dump emitter generated instructions as assembly"));
 
 FileModel::Model
 LLVMTargetMachine::addPassesToEmitFile(FunctionPassManager &PM,
@@ -119,7 +121,7 @@
                                                   MachineCodeEmitter *MCE,
                                                   bool Fast) {
   if (MCE)
-    addSimpleCodeEmitter(PM, Fast, *MCE);
+    addSimpleCodeEmitter(PM, Fast, PrintEmittedAsm, *MCE);
 
   // Delete machine code for this function
   PM.add(createMachineCodeDeleter());
@@ -196,7 +198,7 @@
   if (addPreEmitPass(PM, Fast) && PrintMachineCode)
     PM.add(createMachineFunctionPrinterPass(cerr));
 
-  addCodeEmitter(PM, Fast, MCE);
+  addCodeEmitter(PM, Fast, PrintEmittedAsm, MCE);
   
   // Delete machine code for this function
   PM.add(createMachineCodeDeleter());

Modified: llvm/trunk/lib/Target/ARM/ARMTargetMachine.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/ARM/ARMTargetMachine.cpp?rev=40123&r1=40122&r2=40123&view=diff

==============================================================================
--- llvm/trunk/lib/Target/ARM/ARMTargetMachine.cpp (original)
+++ llvm/trunk/lib/Target/ARM/ARMTargetMachine.cpp Fri Jul 20 16:56:13 2007
@@ -143,18 +143,22 @@
 
 
 bool ARMTargetMachine::addCodeEmitter(FunctionPassManager &PM, bool Fast,
-                                      MachineCodeEmitter &MCE) {
+                                      bool DumpAsm, MachineCodeEmitter &MCE) {
   // FIXME: Move this to TargetJITInfo!
   setRelocationModel(Reloc::Static);
 
   // Machine code emitter pass for ARM.
   PM.add(createARMCodeEmitterPass(*this, MCE));
+  if (DumpAsm)
+    PM.add(createARMCodePrinterPass(*cerr.stream(), *this));
   return false;
 }
 
 bool ARMTargetMachine::addSimpleCodeEmitter(FunctionPassManager &PM, bool Fast,
-                                            MachineCodeEmitter &MCE) {
+                                        bool DumpAsm, MachineCodeEmitter &MCE) {
   // Machine code emitter pass for ARM.
   PM.add(createARMCodeEmitterPass(*this, MCE));
+  if (DumpAsm)
+    PM.add(createARMCodePrinterPass(*cerr.stream(), *this));
   return false;
 }

Modified: llvm/trunk/lib/Target/ARM/ARMTargetMachine.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/ARM/ARMTargetMachine.h?rev=40123&r1=40122&r2=40123&view=diff

==============================================================================
--- llvm/trunk/lib/Target/ARM/ARMTargetMachine.h (original)
+++ llvm/trunk/lib/Target/ARM/ARMTargetMachine.h Fri Jul 20 16:56:13 2007
@@ -61,9 +61,9 @@
   virtual bool addAssemblyEmitter(FunctionPassManager &PM, bool Fast, 
                                   std::ostream &Out);
   virtual bool addCodeEmitter(FunctionPassManager &PM, bool Fast,
-                              MachineCodeEmitter &MCE);
+                              bool DumpAsm, MachineCodeEmitter &MCE);
   virtual bool addSimpleCodeEmitter(FunctionPassManager &PM, bool Fast,
-                                    MachineCodeEmitter &MCE);
+                                    bool DumpAsm, MachineCodeEmitter &MCE);
 };
 
 /// ThumbTargetMachine - Thumb target machine.

Modified: llvm/trunk/lib/Target/Alpha/AlphaTargetMachine.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Alpha/AlphaTargetMachine.cpp?rev=40123&r1=40122&r2=40123&view=diff

==============================================================================
--- llvm/trunk/lib/Target/Alpha/AlphaTargetMachine.cpp (original)
+++ llvm/trunk/lib/Target/Alpha/AlphaTargetMachine.cpp Fri Jul 20 16:56:13 2007
@@ -86,12 +86,14 @@
   return false;
 }
 bool AlphaTargetMachine::addCodeEmitter(FunctionPassManager &PM, bool Fast,
-                                        MachineCodeEmitter &MCE) {
+                                        bool DumpAsm, MachineCodeEmitter &MCE) {
   PM.add(createAlphaCodeEmitterPass(*this, MCE));
+  if (DumpAsm)
+    PM.add(createAlphaCodePrinterPass(*cerr.stream(), *this));
   return false;
 }
 bool AlphaTargetMachine::addSimpleCodeEmitter(FunctionPassManager &PM,
-                                              bool Fast,
+                                              bool Fast, bool DumpAsm,
                                               MachineCodeEmitter &MCE) {
-  return addCodeEmitter(PM, Fast, MCE);
+  return addCodeEmitter(PM, Fast, DumpAsm, MCE);
 }

Modified: llvm/trunk/lib/Target/Alpha/AlphaTargetMachine.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Alpha/AlphaTargetMachine.h?rev=40123&r1=40122&r2=40123&view=diff

==============================================================================
--- llvm/trunk/lib/Target/Alpha/AlphaTargetMachine.h (original)
+++ llvm/trunk/lib/Target/Alpha/AlphaTargetMachine.h Fri Jul 20 16:56:13 2007
@@ -63,9 +63,9 @@
   virtual bool addAssemblyEmitter(FunctionPassManager &PM, bool Fast, 
                                   std::ostream &Out);
   virtual bool addCodeEmitter(FunctionPassManager &PM, bool Fast,
-                              MachineCodeEmitter &MCE);
+                              bool DumpAsm, MachineCodeEmitter &MCE);
   virtual bool addSimpleCodeEmitter(FunctionPassManager &PM, bool Fast,
-                                    MachineCodeEmitter &MCE);
+                                    bool DumpAsm, MachineCodeEmitter &MCE);
 };
 
 } // end namespace llvm

Modified: llvm/trunk/lib/Target/PowerPC/PPCTargetMachine.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/PowerPC/PPCTargetMachine.cpp?rev=40123&r1=40122&r2=40123&view=diff

==============================================================================
--- llvm/trunk/lib/Target/PowerPC/PPCTargetMachine.cpp (original)
+++ llvm/trunk/lib/Target/PowerPC/PPCTargetMachine.cpp Fri Jul 20 16:56:13 2007
@@ -137,7 +137,7 @@
 }
 
 bool PPCTargetMachine::addCodeEmitter(FunctionPassManager &PM, bool Fast,
-                                      MachineCodeEmitter &MCE) {
+                                      bool DumpAsm, MachineCodeEmitter &MCE) {
   // The JIT should use the static relocation model in ppc32 mode, PIC in ppc64.
   // FIXME: This should be moved to TargetJITInfo!!
   if (Subtarget.isPPC64()) {
@@ -155,12 +155,16 @@
   
   // Machine code emitter pass for PowerPC.
   PM.add(createPPCCodeEmitterPass(*this, MCE));
+  if (DumpAsm) 
+    PM.add(createPPCAsmPrinterPass(*cerr.stream(), *this));
   return false;
 }
 
 bool PPCTargetMachine::addSimpleCodeEmitter(FunctionPassManager &PM, bool Fast,
-                                            MachineCodeEmitter &MCE) {
+                                            bool DumpAsm, MachineCodeEmitter &MCE) {
   // Machine code emitter pass for PowerPC.
   PM.add(createPPCCodeEmitterPass(*this, MCE));
+  if (DumpAsm) 
+    PM.add(createPPCAsmPrinterPass(*cerr.stream(), *this));
   return false;
 }

Modified: llvm/trunk/lib/Target/PowerPC/PPCTargetMachine.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/PowerPC/PPCTargetMachine.h?rev=40123&r1=40122&r2=40123&view=diff

==============================================================================
--- llvm/trunk/lib/Target/PowerPC/PPCTargetMachine.h (original)
+++ llvm/trunk/lib/Target/PowerPC/PPCTargetMachine.h Fri Jul 20 16:56:13 2007
@@ -70,9 +70,9 @@
   virtual bool addAssemblyEmitter(FunctionPassManager &PM, bool Fast, 
                                   std::ostream &Out);
   virtual bool addCodeEmitter(FunctionPassManager &PM, bool Fast,
-                              MachineCodeEmitter &MCE);
+                              bool DumpAsm, MachineCodeEmitter &MCE);
   virtual bool addSimpleCodeEmitter(FunctionPassManager &PM, bool Fast,
-                                    MachineCodeEmitter &MCE);
+                                    bool DumpAsm, MachineCodeEmitter &MCE);
   virtual const bool getEnableTailMergeDefault() const;
 };
 

Modified: llvm/trunk/lib/Target/X86/X86TargetMachine.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86TargetMachine.cpp?rev=40123&r1=40122&r2=40123&view=diff

==============================================================================
--- llvm/trunk/lib/Target/X86/X86TargetMachine.cpp (original)
+++ llvm/trunk/lib/Target/X86/X86TargetMachine.cpp Fri Jul 20 16:56:13 2007
@@ -170,7 +170,7 @@
 }
 
 bool X86TargetMachine::addCodeEmitter(FunctionPassManager &PM, bool Fast,
-                                      MachineCodeEmitter &MCE) {
+                                      bool DumpAsm, MachineCodeEmitter &MCE) {
   // FIXME: Move this to TargetJITInfo!
   setRelocationModel(Reloc::Static);
   Subtarget.setPICStyle(PICStyle::None);
@@ -180,11 +180,16 @@
     setCodeModel(CodeModel::Large);
 
   PM.add(createX86CodeEmitterPass(*this, MCE));
+  if (DumpAsm)
+    PM.add(createX86CodePrinterPass(*cerr.stream(), *this));
+
   return false;
 }
 
 bool X86TargetMachine::addSimpleCodeEmitter(FunctionPassManager &PM, bool Fast,
-                                            MachineCodeEmitter &MCE) {
+                                        bool DumpAsm, MachineCodeEmitter &MCE) {
   PM.add(createX86CodeEmitterPass(*this, MCE));
+  if (DumpAsm)
+    PM.add(createX86CodePrinterPass(*cerr.stream(), *this));
   return false;
 }

Modified: llvm/trunk/lib/Target/X86/X86TargetMachine.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86TargetMachine.h?rev=40123&r1=40122&r2=40123&view=diff

==============================================================================
--- llvm/trunk/lib/Target/X86/X86TargetMachine.h (original)
+++ llvm/trunk/lib/Target/X86/X86TargetMachine.h Fri Jul 20 16:56:13 2007
@@ -65,9 +65,9 @@
   virtual bool addAssemblyEmitter(FunctionPassManager &PM, bool Fast, 
                                   std::ostream &Out);
   virtual bool addCodeEmitter(FunctionPassManager &PM, bool Fast,
-                              MachineCodeEmitter &MCE);
+                              bool DumpAsm, MachineCodeEmitter &MCE);
   virtual bool addSimpleCodeEmitter(FunctionPassManager &PM, bool Fast,
-                                    MachineCodeEmitter &MCE);
+                                    bool DumpAsm, MachineCodeEmitter &MCE);
 };
 
 /// X86_32TargetMachine - X86 32-bit target machine.





More information about the llvm-commits mailing list