Anton Korobeynikov | 7869503 | 2008-04-23 22:29:24 +0000 | [diff] [blame] | 1 | //===-- CPPTargetMachine.h - TargetMachine for the C++ backend --*- C++ -*-===// |
| 2 | // |
| 3 | // The LLVM Compiler Infrastructure |
| 4 | // |
| 5 | // This file is distributed under the University of Illinois Open Source |
| 6 | // License. See LICENSE.TXT for details. |
| 7 | // |
| 8 | //===----------------------------------------------------------------------===// |
| 9 | // |
| 10 | // This file declares the TargetMachine that is used by the C++ backend. |
| 11 | // |
| 12 | //===----------------------------------------------------------------------===// |
| 13 | |
Benjamin Kramer | a7c40ef | 2014-08-13 16:26:38 +0000 | [diff] [blame] | 14 | #ifndef LLVM_LIB_TARGET_CPPBACKEND_CPPTARGETMACHINE_H |
| 15 | #define LLVM_LIB_TARGET_CPPBACKEND_CPPTARGETMACHINE_H |
Anton Korobeynikov | 7869503 | 2008-04-23 22:29:24 +0000 | [diff] [blame] | 16 | |
Chandler Carruth | 9fb823b | 2013-01-02 11:36:10 +0000 | [diff] [blame] | 17 | #include "llvm/IR/DataLayout.h" |
Chandler Carruth | 802d755 | 2012-12-04 07:12:27 +0000 | [diff] [blame] | 18 | #include "llvm/Target/TargetMachine.h" |
Eric Christopher | eba9167 | 2014-08-04 16:40:55 +0000 | [diff] [blame] | 19 | #include "llvm/Target/TargetSubtargetInfo.h" |
Anton Korobeynikov | 7869503 | 2008-04-23 22:29:24 +0000 | [diff] [blame] | 20 | |
| 21 | namespace llvm { |
| 22 | |
David Greene | a31f96c | 2009-07-14 20:18:05 +0000 | [diff] [blame] | 23 | class formatted_raw_ostream; |
Owen Anderson | 9371964 | 2008-08-21 00:14:44 +0000 | [diff] [blame] | 24 | |
Eric Christopher | eba9167 | 2014-08-04 16:40:55 +0000 | [diff] [blame] | 25 | class CPPSubtarget : public TargetSubtargetInfo { |
| 26 | }; |
| 27 | |
Anton Korobeynikov | 7869503 | 2008-04-23 22:29:24 +0000 | [diff] [blame] | 28 | struct CPPTargetMachine : public TargetMachine { |
Evan Cheng | 2129f59 | 2011-07-19 06:37:02 +0000 | [diff] [blame] | 29 | CPPTargetMachine(const Target &T, StringRef TT, |
Nick Lewycky | 50f02cb | 2011-12-02 22:16:29 +0000 | [diff] [blame] | 30 | StringRef CPU, StringRef FS, const TargetOptions &Options, |
Evan Cheng | ecb2908 | 2011-11-16 08:38:26 +0000 | [diff] [blame] | 31 | Reloc::Model RM, CodeModel::Model CM, |
| 32 | CodeGenOpt::Level OL) |
Eric Christopher | eba9167 | 2014-08-04 16:40:55 +0000 | [diff] [blame] | 33 | : TargetMachine(T, TT, CPU, FS, Options), Subtarget() {} |
| 34 | private: |
| 35 | CPPSubtarget Subtarget; |
Anton Korobeynikov | 7869503 | 2008-04-23 22:29:24 +0000 | [diff] [blame] | 36 | |
Eric Christopher | eba9167 | 2014-08-04 16:40:55 +0000 | [diff] [blame] | 37 | public: |
| 38 | const CPPSubtarget *getSubtargetImpl() const override { return &Subtarget; } |
Craig Topper | 9d74a5a | 2014-04-29 07:58:41 +0000 | [diff] [blame] | 39 | bool addPassesToEmitFile(PassManagerBase &PM, formatted_raw_ostream &Out, |
| 40 | CodeGenFileType FileType, bool DisableVerify, |
| 41 | AnalysisID StartAfter, |
| 42 | AnalysisID StopAfter) override; |
Anton Korobeynikov | 7869503 | 2008-04-23 22:29:24 +0000 | [diff] [blame] | 43 | }; |
| 44 | |
Daniel Dunbar | 67038c1 | 2009-07-18 23:03:22 +0000 | [diff] [blame] | 45 | extern Target TheCppBackendTarget; |
| 46 | |
Anton Korobeynikov | 7869503 | 2008-04-23 22:29:24 +0000 | [diff] [blame] | 47 | } // End llvm namespace |
| 48 | |
| 49 | |
| 50 | #endif |