LLVM API Documentation

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
CommandFlags.h
Go to the documentation of this file.
1 //===-- CommandFlags.h - Command Line Flags Interface -----------*- 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 // This file contains codegen-specific flags that are shared between different
11 // command line tools. The tools "llc" and "opt" both use this file to prevent
12 // flag duplication.
13 //
14 //===----------------------------------------------------------------------===//
15 
16 #ifndef LLVM_CODEGEN_COMMANDFLAGS_H
17 #define LLVM_CODEGEN_COMMANDFLAGS_H
18 
19 #include "llvm/Support/CodeGen.h"
22 #include <string>
23 using namespace llvm;
24 
26 MArch("march", cl::desc("Architecture to generate code for (see --version)"));
27 
29 MCPU("mcpu",
30  cl::desc("Target a specific cpu type (-mcpu=help for details)"),
31  cl::value_desc("cpu-name"),
32  cl::init(""));
33 
35 MAttrs("mattr",
37  cl::desc("Target specific attributes (-mattr=help for details)"),
38  cl::value_desc("a1,+a2,-a3,..."));
39 
41 RelocModel("relocation-model",
42  cl::desc("Choose relocation model"),
44  cl::values(
45  clEnumValN(Reloc::Default, "default",
46  "Target default relocation model"),
47  clEnumValN(Reloc::Static, "static",
48  "Non-relocatable code"),
49  clEnumValN(Reloc::PIC_, "pic",
50  "Fully relocatable, position independent code"),
51  clEnumValN(Reloc::DynamicNoPIC, "dynamic-no-pic",
52  "Relocatable external references, non-relocatable code"),
53  clEnumValEnd));
54 
56 CMModel("code-model",
57  cl::desc("Choose code model"),
60  "Target default code model"),
62  "Small code model"),
63  clEnumValN(CodeModel::Kernel, "kernel",
64  "Kernel code model"),
65  clEnumValN(CodeModel::Medium, "medium",
66  "Medium code model"),
68  "Large code model"),
69  clEnumValEnd));
70 
72 RelaxAll("mc-relax-all",
73  cl::desc("When used with filetype=obj, "
74  "relax all fixups in the emitted object file"));
75 
78  cl::desc("Choose a file type (not all types are supported by all targets):"),
79  cl::values(
81  "Emit an assembly ('.s') file"),
83  "Emit a native object ('.o') file"),
85  "Emit nothing, for performance testing"),
86  clEnumValEnd));
87 
88 cl::opt<bool> DisableDotLoc("disable-dot-loc", cl::Hidden,
89  cl::desc("Do not use .loc entries"));
90 
91 cl::opt<bool> DisableCFI("disable-cfi", cl::Hidden,
92  cl::desc("Do not use .cfi_* directives"));
93 
94 cl::opt<bool> EnableDwarfDirectory("enable-dwarf-directory", cl::Hidden,
95  cl::desc("Use .file directives with an explicit directory."));
96 
98 DisableRedZone("disable-red-zone",
99  cl::desc("Do not emit code that uses the red zone."),
100  cl::init(false));
101 
103 EnableFPMAD("enable-fp-mad",
104  cl::desc("Enable less precise MAD instructions to be generated"),
105  cl::init(false));
106 
108 DisableFPElim("disable-fp-elim",
109  cl::desc("Disable frame pointer elimination optimization"),
110  cl::init(false));
111 
113 EnableUnsafeFPMath("enable-unsafe-fp-math",
114  cl::desc("Enable optimizations that may decrease FP precision"),
115  cl::init(false));
116 
118 EnableNoInfsFPMath("enable-no-infs-fp-math",
119  cl::desc("Enable FP math optimizations that assume no +-Infs"),
120  cl::init(false));
121 
123 EnableNoNaNsFPMath("enable-no-nans-fp-math",
124  cl::desc("Enable FP math optimizations that assume no NaNs"),
125  cl::init(false));
126 
128 EnableHonorSignDependentRoundingFPMath("enable-sign-dependent-rounding-fp-math",
129  cl::Hidden,
130  cl::desc("Force codegen to assume rounding mode can change dynamically"),
131  cl::init(false));
132 
134 GenerateSoftFloatCalls("soft-float",
135  cl::desc("Generate software floating point library calls"),
136  cl::init(false));
137 
139 FloatABIForCalls("float-abi",
140  cl::desc("Choose float ABI type"),
142  cl::values(
143  clEnumValN(FloatABI::Default, "default",
144  "Target default float ABI type"),
145  clEnumValN(FloatABI::Soft, "soft",
146  "Soft float ABI (implied by -soft-float)"),
147  clEnumValN(FloatABI::Hard, "hard",
148  "Hard float ABI (uses FP registers)"),
149  clEnumValEnd));
150 
152 FuseFPOps("fp-contract",
153  cl::desc("Enable aggressive formation of fused FP ops"),
155  cl::values(
157  "Fuse FP ops whenever profitable"),
159  "Only fuse 'blessed' FP ops."),
161  "Only fuse FP ops when the result won't be effected."),
162  clEnumValEnd));
163 
165 DontPlaceZerosInBSS("nozero-initialized-in-bss",
166  cl::desc("Don't place zero-initialized symbols into bss section"),
167  cl::init(false));
168 
170 EnableGuaranteedTailCallOpt("tailcallopt",
171  cl::desc("Turn fastcc calls into tail calls by (potentially) changing ABI."),
172  cl::init(false));
173 
175 DisableTailCalls("disable-tail-calls",
176  cl::desc("Never emit tail calls"),
177  cl::init(false));
178 
180 OverrideStackAlignment("stack-alignment",
181  cl::desc("Override default stack alignment"),
182  cl::init(0));
183 
185 TrapFuncName("trap-func", cl::Hidden,
186  cl::desc("Emit a call to trap function rather than a trap instruction"),
187  cl::init(""));
188 
190 EnablePIE("enable-pie",
191  cl::desc("Assume the creation of a position independent executable."),
192  cl::init(false));
193 
195 SegmentedStacks("segmented-stacks",
196  cl::desc("Use segmented stacks if possible."),
197  cl::init(false));
198 
200 UseInitArray("use-init-array",
201  cl::desc("Use .init_array instead of .ctors."),
202  cl::init(false));
203 
204 cl::opt<std::string> StopAfter("stop-after",
205  cl::desc("Stop compilation after a specific pass"),
206  cl::value_desc("pass-name"),
207  cl::init(""));
208 cl::opt<std::string> StartAfter("start-after",
209  cl::desc("Resume compilation after a specific pass"),
210  cl::value_desc("pass-name"),
211  cl::init(""));
212 
213 #endif
cl::opt< bool > EnableNoNaNsFPMath("enable-no-nans-fp-math", cl::desc("Enable FP math optimizations that assume no NaNs"), cl::init(false))
#define clEnumValEnd
Definition: CommandLine.h:472
cl::opt< bool > EnableDwarfDirectory("enable-dwarf-directory", cl::Hidden, cl::desc("Use .file directives with an explicit directory."))
ValuesClass< DataType > END_WITH_NULL values(const char *Arg, DataType Val, const char *Desc,...)
Definition: CommandLine.h:510
cl::opt< bool > SegmentedStacks("segmented-stacks", cl::desc("Use segmented stacks if possible."), cl::init(false))
cl::opt< bool > EnableFPMAD("enable-fp-mad", cl::desc("Enable less precise MAD instructions to be generated"), cl::init(false))
cl::opt< bool > EnablePIE("enable-pie", cl::desc("Assume the creation of a position independent executable."), cl::init(false))
cl::opt< bool > GenerateSoftFloatCalls("soft-float", cl::desc("Generate software floating point library calls"), cl::init(false))
cl::opt< bool > DisableFPElim("disable-fp-elim", cl::desc("Disable frame pointer elimination optimization"), cl::init(false))
cl::opt< bool > DontPlaceZerosInBSS("nozero-initialized-in-bss", cl::desc("Don't place zero-initialized symbols into bss section"), cl::init(false))
initializer< Ty > init(const Ty &Val)
Definition: CommandLine.h:314
cl::opt< bool > UseInitArray("use-init-array", cl::desc("Use .init_array instead of .ctors."), cl::init(false))
cl::opt< Reloc::Model > RelocModel("relocation-model", cl::desc("Choose relocation model"), cl::init(Reloc::Default), cl::values(clEnumValN(Reloc::Default,"default","Target default relocation model"), clEnumValN(Reloc::Static,"static","Non-relocatable code"), clEnumValN(Reloc::PIC_,"pic","Fully relocatable, position independent code"), clEnumValN(Reloc::DynamicNoPIC,"dynamic-no-pic","Relocatable external references, non-relocatable code"), clEnumValEnd))
cl::list< std::string > MAttrs("mattr", cl::CommaSeparated, cl::desc("Target specific attributes (-mattr=help for details)"), cl::value_desc("a1,+a2,-a3,..."))
cl::opt< bool > EnableNoInfsFPMath("enable-no-infs-fp-math", cl::desc("Enable FP math optimizations that assume no +-Infs"), cl::init(false))
cl::opt< bool > DisableDotLoc("disable-dot-loc", cl::Hidden, cl::desc("Do not use .loc entries"))
cl::opt< llvm::CodeModel::Model > CMModel("code-model", cl::desc("Choose code model"), cl::init(CodeModel::Default), cl::values(clEnumValN(CodeModel::Default,"default","Target default code model"), clEnumValN(CodeModel::Small,"small","Small code model"), clEnumValN(CodeModel::Kernel,"kernel","Kernel code model"), clEnumValN(CodeModel::Medium,"medium","Medium code model"), clEnumValN(CodeModel::Large,"large","Large code model"), clEnumValEnd))
cl::opt< llvm::FloatABI::ABIType > FloatABIForCalls("float-abi", cl::desc("Choose float ABI type"), cl::init(FloatABI::Default), cl::values(clEnumValN(FloatABI::Default,"default","Target default float ABI type"), clEnumValN(FloatABI::Soft,"soft","Soft float ABI (implied by -soft-float)"), clEnumValN(FloatABI::Hard,"hard","Hard float ABI (uses FP registers)"), clEnumValEnd))
cl::opt< bool > DisableRedZone("disable-red-zone", cl::desc("Do not emit code that uses the red zone."), cl::init(false))
cl::opt< bool > EnableUnsafeFPMath("enable-unsafe-fp-math", cl::desc("Enable optimizations that may decrease FP precision"), cl::init(false))
cl::opt< std::string > MCPU("mcpu", cl::desc("Target a specific cpu type (-mcpu=help for details)"), cl::value_desc("cpu-name"), cl::init(""))
cl::opt< std::string > MArch("march", cl::desc("Architecture to generate code for (see --version)"))
cl::opt< bool > DisableTailCalls("disable-tail-calls", cl::desc("Never emit tail calls"), cl::init(false))
cl::opt< llvm::FPOpFusion::FPOpFusionMode > FuseFPOps("fp-contract", cl::desc("Enable aggressive formation of fused FP ops"), cl::init(FPOpFusion::Standard), cl::values(clEnumValN(FPOpFusion::Fast,"fast","Fuse FP ops whenever profitable"), clEnumValN(FPOpFusion::Standard,"on","Only fuse 'blessed' FP ops."), clEnumValN(FPOpFusion::Strict,"off","Only fuse FP ops when the result won't be effected."), clEnumValEnd))
cl::opt< unsigned > OverrideStackAlignment("stack-alignment", cl::desc("Override default stack alignment"), cl::init(0))
#define clEnumValN(ENUMVAL, FLAGNAME, DESC)
Definition: CommandLine.h:471
cl::opt< std::string > TrapFuncName("trap-func", cl::Hidden, cl::desc("Emit a call to trap function rather than a trap instruction"), cl::init(""))
cl::opt< std::string > StopAfter("stop-after", cl::desc("Stop compilation after a specific pass"), cl::value_desc("pass-name"), cl::init(""))
cl::opt< std::string > StartAfter("start-after", cl::desc("Resume compilation after a specific pass"), cl::value_desc("pass-name"), cl::init(""))
cl::opt< bool > DisableCFI("disable-cfi", cl::Hidden, cl::desc("Do not use .cfi_* directives"))
cl::opt< TargetMachine::CodeGenFileType > FileType("filetype", cl::init(TargetMachine::CGFT_AssemblyFile), cl::desc("Choose a file type (not all types are supported by all targets):"), cl::values(clEnumValN(TargetMachine::CGFT_AssemblyFile,"asm","Emit an assembly ('.s') file"), clEnumValN(TargetMachine::CGFT_ObjectFile,"obj","Emit a native object ('.o') file"), clEnumValN(TargetMachine::CGFT_Null,"null","Emit nothing, for performance testing"), clEnumValEnd))
cl::opt< bool > EnableHonorSignDependentRoundingFPMath("enable-sign-dependent-rounding-fp-math", cl::Hidden, cl::desc("Force codegen to assume rounding mode can change dynamically"), cl::init(false))
cl::opt< bool > RelaxAll("mc-relax-all", cl::desc("When used with filetype=obj, ""relax all fixups in the emitted object file"))
cl::opt< bool > EnableGuaranteedTailCallOpt("tailcallopt", cl::desc("Turn fastcc calls into tail calls by (potentially) changing ABI."), cl::init(false))