Line data Source code
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 :
13 : #include <string>
14 : #include <vector>
15 :
16 : namespace llvm {
17 :
18 : enum class ExceptionHandling {
19 : None, /// No exception support
20 : DwarfCFI, /// DWARF-like instruction based exceptions
21 : SjLj, /// setjmp/longjmp based exceptions
22 : ARM, /// ARM EHABI
23 : WinEH, /// Windows Exception Handling
24 : Wasm, /// WebAssembly Exception Handling
25 : };
26 :
27 : enum class DebugCompressionType {
28 : None, /// No compression
29 : GNU, /// zlib-gnu style compression
30 : Z, /// zlib style complession
31 : };
32 :
33 : class StringRef;
34 :
35 921505 : class MCTargetOptions {
36 : public:
37 : enum AsmInstrumentation {
38 : AsmInstrumentationNone,
39 : AsmInstrumentationAddress
40 : };
41 :
42 : /// Enables AddressSanitizer instrumentation at machine level.
43 : bool SanitizeAddress : 1;
44 :
45 : bool MCRelaxAll : 1;
46 : bool MCNoExecStack : 1;
47 : bool MCFatalWarnings : 1;
48 : bool MCNoWarn : 1;
49 : bool MCNoDeprecatedWarn : 1;
50 : bool MCSaveTempLabels : 1;
51 : bool MCUseDwarfDirectory : 1;
52 : bool MCIncrementalLinkerCompatible : 1;
53 : bool MCPIECopyRelocations : 1;
54 : bool ShowMCEncoding : 1;
55 : bool ShowMCInst : 1;
56 : bool AsmVerbose : 1;
57 :
58 : /// Preserve Comments in Assembly.
59 : bool PreserveAsmComments : 1;
60 :
61 : int DwarfVersion = 0;
62 :
63 : std::string ABIName;
64 : std::string SplitDwarfFile;
65 :
66 : /// Additional paths to search for `.include` directives when using the
67 : /// integrated assembler.
68 : std::vector<std::string> IASSearchPaths;
69 :
70 : MCTargetOptions();
71 :
72 : /// getABIName - If this returns a non-empty string this represents the
73 : /// textual name of the ABI that we want the backend to use, e.g. o32, or
74 : /// aapcs-linux.
75 : StringRef getABIName() const;
76 : };
77 :
78 : } // end namespace llvm
79 :
80 : #endif // LLVM_MC_MCTARGETOPTIONS_H
|