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 namespace llvm { 14 15 class MCTargetOptions { 16 public: 17 enum AsmInstrumentation { 18 AsmInstrumentationNone, 19 AsmInstrumentationAddress 20 }; 21 22 /// Enables AddressSanitizer instrumentation at machine level. 23 bool SanitizeAddress : 1; 24 25 bool MCRelaxAll : 1; 26 bool MCNoExecStack : 1; 27 bool MCSaveTempLabels : 1; 28 bool MCUseDwarfDirectory : 1; 29 bool ShowMCEncoding : 1; 30 bool ShowMCInst : 1; 31 bool AsmVerbose : 1; 32 int DwarfVersion; 33 MCTargetOptions(); 34 }; 35 36 inline bool operator==(const MCTargetOptions &LHS, const MCTargetOptions &RHS) { 37 #define ARE_EQUAL(X) LHS.X == RHS.X 38 return (ARE_EQUAL(SanitizeAddress) && 39 ARE_EQUAL(MCRelaxAll) && 40 ARE_EQUAL(MCNoExecStack) && 41 ARE_EQUAL(MCSaveTempLabels) && 42 ARE_EQUAL(MCUseDwarfDirectory) && 43 ARE_EQUAL(ShowMCEncoding) && 44 ARE_EQUAL(ShowMCInst) && 45 ARE_EQUAL(AsmVerbose) && 46 ARE_EQUAL(DwarfVersion)); 47 #undef ARE_EQUAL 48 } 49 50 inline bool operator!=(const MCTargetOptions &LHS, const MCTargetOptions &RHS) { 51 return !(LHS == RHS); 52 } 53 54 } // end namespace llvm 55 56 #endif 57