Move -dwarf-version to an MC level command line option so it's
[oota-llvm.git] / include / llvm / MC / MCTargetOptions.h
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