- //===- MCTargetOptions.h - MC Target Options --------------------*- C++ -*-===// 
- // 
- // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 
- // See https://llvm.org/LICENSE.txt for license information. 
- // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 
- // 
- //===----------------------------------------------------------------------===// 
-   
- #ifndef LLVM_MC_MCTARGETOPTIONS_H 
- #define LLVM_MC_MCTARGETOPTIONS_H 
-   
- #include "llvm/ADT/ArrayRef.h" 
- #include "llvm/Support/Compression.h" 
- #include <string> 
- #include <vector> 
-   
- namespace llvm { 
-   
- enum class ExceptionHandling { 
-   None,     ///< No exception support 
-   DwarfCFI, ///< DWARF-like instruction based exceptions 
-   SjLj,     ///< setjmp/longjmp based exceptions 
-   ARM,      ///< ARM EHABI 
-   WinEH,    ///< Windows Exception Handling 
-   Wasm,     ///< WebAssembly Exception Handling 
-   AIX,      ///< AIX Exception Handling 
- }; 
-   
- enum class EmitDwarfUnwindType { 
-   Always,          // Always emit dwarf unwind 
-   NoCompactUnwind, // Only emit if compact unwind isn't available 
-   Default,         // Default behavior is based on the target 
- }; 
-   
- class StringRef; 
-   
- class MCTargetOptions { 
- public: 
-   enum AsmInstrumentation { 
-     AsmInstrumentationNone, 
-     AsmInstrumentationAddress 
-   }; 
-   
-   bool MCRelaxAll : 1; 
-   bool MCNoExecStack : 1; 
-   bool MCFatalWarnings : 1; 
-   bool MCNoWarn : 1; 
-   bool MCNoDeprecatedWarn : 1; 
-   bool MCNoTypeCheck : 1; 
-   bool MCSaveTempLabels : 1; 
-   bool MCIncrementalLinkerCompatible : 1; 
-   bool ShowMCEncoding : 1; 
-   bool ShowMCInst : 1; 
-   bool AsmVerbose : 1; 
-   
-   /// Preserve Comments in Assembly. 
-   bool PreserveAsmComments : 1; 
-   
-   bool Dwarf64 : 1; 
-   
-   EmitDwarfUnwindType EmitDwarfUnwind; 
-   
-   int DwarfVersion = 0; 
-   
-   enum DwarfDirectory { 
-     // Force disable 
-     DisableDwarfDirectory, 
-     // Force enable, for assemblers that support 
-     // `.file fileno directory filename' syntax 
-     EnableDwarfDirectory, 
-     // Default is based on the target 
-     DefaultDwarfDirectory 
-   }; 
-   DwarfDirectory MCUseDwarfDirectory; 
-   
-   std::string ABIName; 
-   std::string AssemblyLanguage; 
-   std::string SplitDwarfFile; 
-   std::string AsSecureLogFile; 
-   
-   const char *Argv0 = nullptr; 
-   ArrayRef<std::string> CommandLineArgs; 
-   
-   /// Additional paths to search for `.include` directives when using the 
-   /// integrated assembler. 
-   std::vector<std::string> IASSearchPaths; 
-   
-   MCTargetOptions(); 
-   
-   /// getABIName - If this returns a non-empty string this represents the 
-   /// textual name of the ABI that we want the backend to use, e.g. o32, or 
-   /// aapcs-linux. 
-   StringRef getABIName() const; 
-   
-   /// getAssemblyLanguage - If this returns a non-empty string this represents 
-   /// the textual name of the assembly language that we will use for this 
-   /// target, e.g. masm. 
-   StringRef getAssemblyLanguage() const; 
- }; 
-   
- } // end namespace llvm 
-   
- #endif // LLVM_MC_MCTARGETOPTIONS_H 
-