]>
Commit | Line | Data |
---|---|---|
1a4d82fc JJ |
1 | //===- MCTargetOptions.h - MC Target Options -------------------*- 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 | #ifndef LLVM_MC_MCTARGETOPTIONS_H | |
11 | #define LLVM_MC_MCTARGETOPTIONS_H | |
12 | ||
85aaf69f SL |
13 | #include <string> |
14 | ||
1a4d82fc JJ |
15 | namespace llvm { |
16 | ||
85aaf69f SL |
17 | class StringRef; |
18 | ||
1a4d82fc JJ |
19 | class MCTargetOptions { |
20 | public: | |
21 | enum AsmInstrumentation { | |
22 | AsmInstrumentationNone, | |
23 | AsmInstrumentationAddress | |
24 | }; | |
25 | ||
26 | /// Enables AddressSanitizer instrumentation at machine level. | |
27 | bool SanitizeAddress : 1; | |
28 | ||
29 | bool MCRelaxAll : 1; | |
30 | bool MCNoExecStack : 1; | |
31 | bool MCFatalWarnings : 1; | |
32 | bool MCSaveTempLabels : 1; | |
33 | bool MCUseDwarfDirectory : 1; | |
34 | bool ShowMCEncoding : 1; | |
35 | bool ShowMCInst : 1; | |
36 | bool AsmVerbose : 1; | |
37 | int DwarfVersion; | |
85aaf69f SL |
38 | /// getABIName - If this returns a non-empty string this represents the |
39 | /// textual name of the ABI that we want the backend to use, e.g. o32, or | |
40 | /// aapcs-linux. | |
41 | StringRef getABIName() const; | |
42 | std::string ABIName; | |
1a4d82fc JJ |
43 | MCTargetOptions(); |
44 | }; | |
45 | ||
46 | inline bool operator==(const MCTargetOptions &LHS, const MCTargetOptions &RHS) { | |
47 | #define ARE_EQUAL(X) LHS.X == RHS.X | |
48 | return (ARE_EQUAL(SanitizeAddress) && | |
49 | ARE_EQUAL(MCRelaxAll) && | |
50 | ARE_EQUAL(MCNoExecStack) && | |
51 | ARE_EQUAL(MCFatalWarnings) && | |
52 | ARE_EQUAL(MCSaveTempLabels) && | |
53 | ARE_EQUAL(MCUseDwarfDirectory) && | |
54 | ARE_EQUAL(ShowMCEncoding) && | |
55 | ARE_EQUAL(ShowMCInst) && | |
56 | ARE_EQUAL(AsmVerbose) && | |
85aaf69f SL |
57 | ARE_EQUAL(DwarfVersion) && |
58 | ARE_EQUAL(ABIName)); | |
1a4d82fc JJ |
59 | #undef ARE_EQUAL |
60 | } | |
61 | ||
62 | inline bool operator!=(const MCTargetOptions &LHS, const MCTargetOptions &RHS) { | |
63 | return !(LHS == RHS); | |
64 | } | |
65 | ||
66 | } // end namespace llvm | |
67 | ||
68 | #endif |