]> git.proxmox.com Git - rustc.git/blame - src/llvm/include/llvm/MC/MCTargetOptions.h
Imported Upstream version 1.0.0+dfsg1
[rustc.git] / src / llvm / include / llvm / MC / MCTargetOptions.h
CommitLineData
1a4d82fc
JJ
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
85aaf69f
SL
13#include <string>
14
1a4d82fc
JJ
15namespace llvm {
16
85aaf69f
SL
17class StringRef;
18
1a4d82fc
JJ
19class MCTargetOptions {
20public:
21 enum AsmInstrumentation {
22 AsmInstrumentationNone,
23 AsmInstrumentationAddress
24 };
25
26 /// Enables AddressSanitizer instrumentation at machine level.
27 bool SanitizeAddress : 1;
28
29 bool MCRelaxAll : 1;
30 bool MCNoExecStack : 1;
31 bool MCFatalWarnings : 1;
32 bool MCSaveTempLabels : 1;
33 bool MCUseDwarfDirectory : 1;
34 bool ShowMCEncoding : 1;
35 bool ShowMCInst : 1;
36 bool AsmVerbose : 1;
37 int DwarfVersion;
85aaf69f
SL
38 /// getABIName - If this returns a non-empty string this represents the
39 /// textual name of the ABI that we want the backend to use, e.g. o32, or
40 /// aapcs-linux.
41 StringRef getABIName() const;
42 std::string ABIName;
1a4d82fc
JJ
43 MCTargetOptions();
44};
45
46inline bool operator==(const MCTargetOptions &LHS, const MCTargetOptions &RHS) {
47#define ARE_EQUAL(X) LHS.X == RHS.X
48 return (ARE_EQUAL(SanitizeAddress) &&
49 ARE_EQUAL(MCRelaxAll) &&
50 ARE_EQUAL(MCNoExecStack) &&
51 ARE_EQUAL(MCFatalWarnings) &&
52 ARE_EQUAL(MCSaveTempLabels) &&
53 ARE_EQUAL(MCUseDwarfDirectory) &&
54 ARE_EQUAL(ShowMCEncoding) &&
55 ARE_EQUAL(ShowMCInst) &&
56 ARE_EQUAL(AsmVerbose) &&
85aaf69f
SL
57 ARE_EQUAL(DwarfVersion) &&
58 ARE_EQUAL(ABIName));
1a4d82fc
JJ
59#undef ARE_EQUAL
60}
61
62inline bool operator!=(const MCTargetOptions &LHS, const MCTargetOptions &RHS) {
63 return !(LHS == RHS);
64}
65
66} // end namespace llvm
67
68#endif