MCTargetOptions.h revision 360784
1//===- MCTargetOptions.h - MC Target Options --------------------*- C++ -*-===//
2//
3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4// See https://llvm.org/LICENSE.txt for license information.
5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6//
7//===----------------------------------------------------------------------===//
8
9#ifndef LLVM_MC_MCTARGETOPTIONS_H
10#define LLVM_MC_MCTARGETOPTIONS_H
11
12#include <string>
13#include <vector>
14
15namespace llvm {
16
17enum class ExceptionHandling {
18  None,     ///< No exception support
19  DwarfCFI, ///< DWARF-like instruction based exceptions
20  SjLj,     ///< setjmp/longjmp based exceptions
21  ARM,      ///< ARM EHABI
22  WinEH,    ///< Windows Exception Handling
23  Wasm,     ///< WebAssembly Exception Handling
24};
25
26enum class DebugCompressionType {
27  None, ///< No compression
28  GNU,  ///< zlib-gnu style compression
29  Z,    ///< zlib style complession
30};
31
32class StringRef;
33
34class MCTargetOptions {
35public:
36  enum AsmInstrumentation {
37    AsmInstrumentationNone,
38    AsmInstrumentationAddress
39  };
40
41  bool MCRelaxAll : 1;
42  bool MCNoExecStack : 1;
43  bool MCFatalWarnings : 1;
44  bool MCNoWarn : 1;
45  bool MCNoDeprecatedWarn : 1;
46  bool MCSaveTempLabels : 1;
47  bool MCUseDwarfDirectory : 1;
48  bool MCIncrementalLinkerCompatible : 1;
49  bool ShowMCEncoding : 1;
50  bool ShowMCInst : 1;
51  bool AsmVerbose : 1;
52
53  /// Preserve Comments in Assembly.
54  bool PreserveAsmComments : 1;
55
56  int DwarfVersion = 0;
57
58  std::string ABIName;
59  std::string SplitDwarfFile;
60
61  /// Additional paths to search for `.include` directives when using the
62  /// integrated assembler.
63  std::vector<std::string> IASSearchPaths;
64
65  MCTargetOptions();
66
67  /// getABIName - If this returns a non-empty string this represents the
68  /// textual name of the ABI that we want the backend to use, e.g. o32, or
69  /// aapcs-linux.
70  StringRef getABIName() const;
71};
72
73} // end namespace llvm
74
75#endif // LLVM_MC_MCTARGETOPTIONS_H
76