We may now pass IntrinsicLowering implementations into these methods
authorChris Lattner <sabre@nondot.org>
Sun, 28 Dec 2003 09:48:17 +0000 (09:48 +0000)
committerChris Lattner <sabre@nondot.org>
Sun, 28 Dec 2003 09:48:17 +0000 (09:48 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10630 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/ExecutionEngine/ExecutionEngine.h
include/llvm/Target/TargetMachineImpls.h

index c376ef71b7ed039df4d4b5513fcbe07100c9865a..cf010084b70a78414a3ec128eb1c9f798381c631 100644 (file)
@@ -30,6 +30,7 @@ class Module;
 class ModuleProvider;
 class TargetData;
 class Type;
+class IntrinsicLowering;
 
 class ExecutionEngine {
   Module &CurMod;
@@ -54,8 +55,10 @@ public:
   const TargetData &getTargetData() const { return *TD; }
 
   /// create - This is the factory method for creating an execution engine which
-  /// is appropriate for the current machine.
-  static ExecutionEngine *create(ModuleProvider *MP, bool ForceInterpreter);
+  /// is appropriate for the current machine.  If specified, the
+  /// IntrinsicLowering implementation should be allocated on the heap.
+  static ExecutionEngine *create(ModuleProvider *MP, bool ForceInterpreter,
+                                 IntrinsicLowering *IL = 0);
 
   /// runFunction - Execute the specified function with the specified arguments,
   /// and return the result.
index 3ca20c74e9915c1b16f9dd6eb8e3e3dec618f606..6ed4152767e7bf3ea9f9630d5bc4b286c1a27a35 100644 (file)
 
 namespace llvm {
 
-class TargetMachine;
-class Module;
-
-// allocateSparcTargetMachine - Allocate and return a subclass of TargetMachine
-// that implements the Sparc backend.
-//
-TargetMachine *allocateSparcTargetMachine(const Module &M);
-
-// allocateX86TargetMachine - Allocate and return a subclass of TargetMachine
-// that implements the X86 backend.  The X86 target machine can run in
-// "emulation" mode, where it is capable of emulating machines of larger pointer
-// size and different endianness if desired.
-//
-TargetMachine *allocateX86TargetMachine(const Module &M);
-
+  class TargetMachine;
+  class Module;
+  class IntrinsicLowering;
+  
+  // allocateSparcTargetMachine - Allocate and return a subclass of
+  // TargetMachine that implements the Sparc backend.  This takes ownership of
+  // the IntrinsicLowering pointer, deleting it when the target machine is
+  // destroyed.
+  //
+  TargetMachine *allocateSparcTargetMachine(const Module &M,
+                                            IntrinsicLowering *IL = 0);
+  
+  // allocateX86TargetMachine - Allocate and return a subclass of TargetMachine
+  // that implements the X86 backend.  This takes ownership of the
+  // IntrinsicLowering pointer, deleting it when the target machine is
+  // destroyed.
+  //
+  TargetMachine *allocateX86TargetMachine(const Module &M,
+                                          IntrinsicLowering *IL = 0);
 } // End llvm namespace
 
 #endif