Home | History | Annotate | Download | only in MC
      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