Subversion Repositories QNX 8.QNX8 LLVM/Clang compiler suite

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
14 pmbaty 1
//===-- CommandFlags.h - Command Line Flags Interface -----------*- C++ -*-===//
2
//
3
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4
// See https://llvm.org/LICENSE.txt for license information.
5
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6
//
7
//===----------------------------------------------------------------------===//
8
//
9
// This file contains codegen-specific flags that are shared between different
10
// command line tools. The tools "llc" and "opt" both use this file to prevent
11
// flag duplication.
12
//
13
//===----------------------------------------------------------------------===//
14
 
15
#ifndef LLVM_CODEGEN_COMMANDFLAGS_H
16
#define LLVM_CODEGEN_COMMANDFLAGS_H
17
 
18
#include "llvm/ADT/FloatingPointMode.h"
19
#include "llvm/Support/CodeGen.h"
20
#include "llvm/Target/TargetOptions.h"
21
#include <optional>
22
#include <string>
23
#include <vector>
24
 
25
namespace llvm {
26
 
27
class Module;
28
class AttrBuilder;
29
class Function;
30
class Triple;
31
 
32
namespace codegen {
33
 
34
std::string getMArch();
35
 
36
std::string getMCPU();
37
 
38
std::vector<std::string> getMAttrs();
39
 
40
Reloc::Model getRelocModel();
41
std::optional<Reloc::Model> getExplicitRelocModel();
42
 
43
ThreadModel::Model getThreadModel();
44
 
45
CodeModel::Model getCodeModel();
46
std::optional<CodeModel::Model> getExplicitCodeModel();
47
 
48
llvm::ExceptionHandling getExceptionModel();
49
 
50
std::optional<CodeGenFileType> getExplicitFileType();
51
 
52
CodeGenFileType getFileType();
53
 
54
FramePointerKind getFramePointerUsage();
55
 
56
bool getEnableUnsafeFPMath();
57
 
58
bool getEnableNoInfsFPMath();
59
 
60
bool getEnableNoNaNsFPMath();
61
 
62
bool getEnableNoSignedZerosFPMath();
63
 
64
bool getEnableApproxFuncFPMath();
65
 
66
bool getEnableNoTrappingFPMath();
67
 
68
DenormalMode::DenormalModeKind getDenormalFPMath();
69
DenormalMode::DenormalModeKind getDenormalFP32Math();
70
 
71
bool getEnableHonorSignDependentRoundingFPMath();
72
 
73
llvm::FloatABI::ABIType getFloatABIForCalls();
74
 
75
llvm::FPOpFusion::FPOpFusionMode getFuseFPOps();
76
 
77
SwiftAsyncFramePointerMode getSwiftAsyncFramePointer();
78
 
79
bool getDontPlaceZerosInBSS();
80
 
81
bool getEnableGuaranteedTailCallOpt();
82
 
83
bool getEnableAIXExtendedAltivecABI();
84
 
85
bool getDisableTailCalls();
86
 
87
bool getStackSymbolOrdering();
88
 
89
unsigned getOverrideStackAlignment();
90
 
91
bool getStackRealign();
92
 
93
std::string getTrapFuncName();
94
 
95
bool getUseCtors();
96
 
97
bool getLowerGlobalDtorsViaCxaAtExit();
98
 
99
bool getRelaxELFRelocations();
100
 
101
bool getDataSections();
102
std::optional<bool> getExplicitDataSections();
103
 
104
bool getFunctionSections();
105
std::optional<bool> getExplicitFunctionSections();
106
 
107
bool getIgnoreXCOFFVisibility();
108
 
109
bool getXCOFFTracebackTable();
110
 
111
std::string getBBSections();
112
 
113
unsigned getTLSSize();
114
 
115
bool getEmulatedTLS();
116
 
117
bool getUniqueSectionNames();
118
 
119
bool getUniqueBasicBlockSectionNames();
120
 
121
llvm::EABI getEABIVersion();
122
 
123
llvm::DebuggerKind getDebuggerTuningOpt();
124
 
125
bool getEnableStackSizeSection();
126
 
127
bool getEnableAddrsig();
128
 
129
bool getEmitCallSiteInfo();
130
 
131
bool getEnableMachineFunctionSplitter();
132
 
133
bool getEnableDebugEntryValues();
134
 
135
bool getValueTrackingVariableLocations();
136
std::optional<bool> getExplicitValueTrackingVariableLocations();
137
 
138
bool getForceDwarfFrameSection();
139
 
140
bool getXRayOmitFunctionIndex();
141
 
142
bool getDebugStrictDwarf();
143
 
144
unsigned getAlignLoops();
145
 
146
bool getJMCInstrument();
147
 
148
/// Create this object with static storage to register codegen-related command
149
/// line options.
150
struct RegisterCodeGenFlags {
151
  RegisterCodeGenFlags();
152
};
153
 
154
llvm::BasicBlockSection getBBSectionsMode(llvm::TargetOptions &Options);
155
 
156
/// Common utility function tightly tied to the options listed here. Initializes
157
/// a TargetOptions object with CodeGen flags and returns it.
158
/// \p TheTriple is used to determine the default value for options if
159
///    options are not explicitly specified. If those triple dependant options
160
///    value do not have effect for your component, a default Triple() could be
161
///    passed in.
162
TargetOptions InitTargetOptionsFromCodeGenFlags(const llvm::Triple &TheTriple);
163
 
164
std::string getCPUStr();
165
 
166
std::string getFeaturesStr();
167
 
168
std::vector<std::string> getFeatureList();
169
 
170
void renderBoolStringAttr(AttrBuilder &B, StringRef Name, bool Val);
171
 
172
/// Set function attributes of function \p F based on CPU, Features, and command
173
/// line flags.
174
void setFunctionAttributes(StringRef CPU, StringRef Features, Function &F);
175
 
176
/// Set function attributes of functions in Module M based on CPU,
177
/// Features, and command line flags.
178
void setFunctionAttributes(StringRef CPU, StringRef Features, Module &M);
179
 
180
/// Should value-tracking variable locations / instruction referencing be
181
/// enabled by default for this triple?
182
bool getDefaultValueTrackingVariableLocations(const llvm::Triple &T);
183
} // namespace codegen
184
} // namespace llvm
185
 
186
#endif // LLVM_CODEGEN_COMMANDFLAGS_H