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
13namespace llvm {
14
15class MCTargetOptions {
16public:
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
36inline 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
50inline bool operator!=(const MCTargetOptions &LHS, const MCTargetOptions &RHS) {
51  return !(LHS == RHS);
52}
53
54} // end namespace llvm
55
56#endif
57