[Orc] Include <system_error> in OrcTargetClient.
[oota-llvm.git] / include / llvm / CodeGen / IntrinsicLowering.h
index 68389dde494f854eab35ee78bd5e550995b80f5a..a404b9b70d3ac2e6252548572a95ac2371d87a53 100644 (file)
 #include "llvm/IR/Intrinsics.h"
 
 namespace llvm {
-  class CallInst;
-  class Module;
-  class DataLayout;
-
-  class IntrinsicLowering {
-    const DataLayout& TD;
-
-    
-    bool Warned;
-  public:
-    explicit IntrinsicLowering(const DataLayout &td) :
-      TD(td), Warned(false) {}
-
-    /// AddPrototypes - This method, if called, causes all of the prototypes
-    /// that might be needed by an intrinsic lowering implementation to be
-    /// inserted into the module specified.
-    void AddPrototypes(Module &M);
-
-    /// LowerIntrinsicCall - This method replaces a call with the LLVM function
-    /// which should be used to implement the specified intrinsic function call.
-    /// If an intrinsic function must be implemented by the code generator 
-    /// (such as va_start), this function should print a message and abort.
-    ///
-    /// Otherwise, if an intrinsic function call can be lowered, the code to
-    /// implement it (often a call to a non-intrinsic function) is inserted
-    /// _after_ the call instruction and the call is deleted.  The caller must
-    /// be capable of handling this kind of change.
-    ///
-    void LowerIntrinsicCall(CallInst *CI);
-
-    /// LowerToByteSwap - Replace a call instruction into a call to bswap
-    /// intrinsic. Return false if it has determined the call is not a
-    /// simple integer bswap.
-    static bool LowerToByteSwap(CallInst *CI);
-  };
+class CallInst;
+class Module;
+class DataLayout;
+
+class IntrinsicLowering {
+  const DataLayout &DL;
+
+  bool Warned;
+
+public:
+  explicit IntrinsicLowering(const DataLayout &DL) : DL(DL), Warned(false) {}
+
+  /// AddPrototypes - This method, if called, causes all of the prototypes
+  /// that might be needed by an intrinsic lowering implementation to be
+  /// inserted into the module specified.
+  void AddPrototypes(Module &M);
+
+  /// LowerIntrinsicCall - This method replaces a call with the LLVM function
+  /// which should be used to implement the specified intrinsic function call.
+  /// If an intrinsic function must be implemented by the code generator
+  /// (such as va_start), this function should print a message and abort.
+  ///
+  /// Otherwise, if an intrinsic function call can be lowered, the code to
+  /// implement it (often a call to a non-intrinsic function) is inserted
+  /// _after_ the call instruction and the call is deleted.  The caller must
+  /// be capable of handling this kind of change.
+  ///
+  void LowerIntrinsicCall(CallInst *CI);
+
+  /// LowerToByteSwap - Replace a call instruction into a call to bswap
+  /// intrinsic. Return false if it has determined the call is not a
+  /// simple integer bswap.
+  static bool LowerToByteSwap(CallInst *CI);
+};
 }
 
 #endif