Move the TargetMachine MC options to MCTargetOptions. No functional
[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   unsigned MCRelaxAll : 1;
26   unsigned MCNoExecStack : 1;
27   unsigned MCSaveTempLabels : 1;
28   unsigned MCUseDwarfDirectory : 1;
29
30   MCTargetOptions();
31 };
32
33 inline bool operator==(const MCTargetOptions &LHS, const MCTargetOptions &RHS) {
34 #define ARE_EQUAL(X) LHS.X == RHS.X
35   return (ARE_EQUAL(SanitizeAddress) &&
36           ARE_EQUAL(MCRelaxAll) &&
37           ARE_EQUAL(MCNoExecStack) &&
38           ARE_EQUAL(MCSaveTempLabels) &&
39           ARE_EQUAL(MCUseDwarfDirectory));
40 #undef ARE_EQUAL
41 }
42
43 inline bool operator!=(const MCTargetOptions &LHS, const MCTargetOptions &RHS) {
44   return !(LHS == RHS);
45 }
46
47 } // end namespace llvm
48
49 #endif