1dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines//===-- MCTargetOptionsCommandFlags.h --------------------------*- 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// This file contains machine code-specific flags that are shared between
11dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines// different command line tools.
12dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines//
13dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines//===----------------------------------------------------------------------===//
14dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines
15dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines#ifndef LLVM_MC_MCTARGETOPTIONSCOMMANDFLAGS_H
16dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines#define LLVM_MC_MCTARGETOPTIONSCOMMANDFLAGS_H
17dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines
18dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines#include "llvm/Support/CommandLine.h"
19dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines#include "llvm/MC/MCTargetOptions.h"
20dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hinesusing namespace llvm;
21dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines
22dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hinescl::opt<MCTargetOptions::AsmInstrumentation> AsmInstrumentation(
23dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines    "asm-instrumentation", cl::desc("Instrumentation of inline assembly and "
24dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines                                    "assembly source files"),
25dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines    cl::init(MCTargetOptions::AsmInstrumentationNone),
26dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines    cl::values(clEnumValN(MCTargetOptions::AsmInstrumentationNone, "none",
27dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines                          "no instrumentation at all"),
28dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines               clEnumValN(MCTargetOptions::AsmInstrumentationAddress, "address",
29dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines                          "instrument instructions with memory arguments"),
30dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines               clEnumValEnd));
31dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines
32dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hinescl::opt<bool> RelaxAll("mc-relax-all",
33dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines                       cl::desc("When used with filetype=obj, "
34dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines                                "relax all fixups in the emitted object file"));
35dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines
36cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hinescl::opt<int> DwarfVersion("dwarf-version", cl::desc("Dwarf version"),
37cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines                          cl::init(0));
38cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines
39cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hinescl::opt<bool> ShowMCInst("asm-show-inst",
40cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines                         cl::desc("Emit internal instruction representation to "
41cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines                                  "assembly file"));
42cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines
43dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hinesstatic inline MCTargetOptions InitMCTargetOptionsFromFlags() {
44dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines  MCTargetOptions Options;
45dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines  Options.SanitizeAddress =
46dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines      (AsmInstrumentation == MCTargetOptions::AsmInstrumentationAddress);
47dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines  Options.MCRelaxAll = RelaxAll;
48cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines  Options.DwarfVersion = DwarfVersion;
49cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines  Options.ShowMCInst = ShowMCInst;
50dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines  return Options;
51dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines}
52dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines
53dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines#endif
54