1dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines//===- MCTargetOptions.h - MC Target Options -------------------*- C++ -*-===// 2dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines// 3dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines// The LLVM Compiler Infrastructure 4dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines// 5dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines// This file is distributed under the University of Illinois Open Source 6dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines// License. See LICENSE.TXT for details. 7dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines// 8dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines//===----------------------------------------------------------------------===// 9dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines 10dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines#ifndef LLVM_MC_MCTARGETOPTIONS_H 11dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines#define LLVM_MC_MCTARGETOPTIONS_H 12dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines 13dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hinesnamespace llvm { 14dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines 15dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hinesclass MCTargetOptions { 16dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hinespublic: 17dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines enum AsmInstrumentation { 18dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines AsmInstrumentationNone, 19dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines AsmInstrumentationAddress 20dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines }; 21dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines 22dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines /// Enables AddressSanitizer instrumentation at machine level. 23dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines bool SanitizeAddress : 1; 24dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines 25dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines bool MCRelaxAll : 1; 26dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines bool MCNoExecStack : 1; 27dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines bool MCSaveTempLabels : 1; 28dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines bool MCUseDwarfDirectory : 1; 29dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines bool ShowMCEncoding : 1; 30dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines bool ShowMCInst : 1; 31dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines bool AsmVerbose : 1; 32cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines int DwarfVersion; 33dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines MCTargetOptions(); 34dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines}; 35dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines 36dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hinesinline bool operator==(const MCTargetOptions &LHS, const MCTargetOptions &RHS) { 37dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines#define ARE_EQUAL(X) LHS.X == RHS.X 38dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines return (ARE_EQUAL(SanitizeAddress) && 39dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ARE_EQUAL(MCRelaxAll) && 40dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ARE_EQUAL(MCNoExecStack) && 41dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ARE_EQUAL(MCSaveTempLabels) && 42dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ARE_EQUAL(MCUseDwarfDirectory) && 43dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ARE_EQUAL(ShowMCEncoding) && 44dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines ARE_EQUAL(ShowMCInst) && 45cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines ARE_EQUAL(AsmVerbose) && 46cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines ARE_EQUAL(DwarfVersion)); 47dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines#undef ARE_EQUAL 48dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines} 49dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines 50dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hinesinline bool operator!=(const MCTargetOptions &LHS, const MCTargetOptions &RHS) { 51dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines return !(LHS == RHS); 52dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines} 53dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines 54dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines} // end namespace llvm 55dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines 56dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines#endif 57