MCTargetOptions.h revision dce4a407a24b04eebc6a376f8e62b41aaa7b071f
15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//===- MCTargetOptions.h - MC Target Options -------------------*- C++ -*-===//
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//                     The LLVM Compiler Infrastructure
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//
590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)// This file is distributed under the University of Illinois Open Source
690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)// License. See LICENSE.TXT for details.
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//===----------------------------------------------------------------------===//
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef LLVM_MC_MCTARGETOPTIONS_H
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LLVM_MC_MCTARGETOPTIONS_H
122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
1390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)namespace llvm {
1490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class MCTargetOptions {
1690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)public:
1790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  enum AsmInstrumentation {
1890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)    AsmInstrumentationNone,
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    AsmInstrumentationAddress
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  };
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /// Enables AddressSanitizer instrumentation at machine level.
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  bool SanitizeAddress : 1;
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  bool MCRelaxAll : 1;
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  bool MCNoExecStack : 1;
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  bool MCSaveTempLabels : 1;
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  bool MCUseDwarfDirectory : 1;
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  bool ShowMCEncoding : 1;
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  bool ShowMCInst : 1;
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  bool AsmVerbose : 1;
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  MCTargetOptions();
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)inline bool operator==(const MCTargetOptions &LHS, const MCTargetOptions &RHS) {
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define ARE_EQUAL(X) LHS.X == RHS.X
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return (ARE_EQUAL(SanitizeAddress) &&
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          ARE_EQUAL(MCRelaxAll) &&
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          ARE_EQUAL(MCNoExecStack) &&
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          ARE_EQUAL(MCSaveTempLabels) &&
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          ARE_EQUAL(MCUseDwarfDirectory) &&
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          ARE_EQUAL(ShowMCEncoding) &&
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          ARE_EQUAL(ShowMCInst) &&
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          ARE_EQUAL(AsmVerbose));
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#undef ARE_EQUAL
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)inline bool operator!=(const MCTargetOptions &LHS, const MCTargetOptions &RHS) {
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return !(LHS == RHS);
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // end namespace llvm
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)