15#ifndef FORTRAN_FRONTEND_CODEGENOPTIONS_H
16#define FORTRAN_FRONTEND_CODEGENOPTIONS_H
18#include "flang/Optimizer/OpenMP/Utils.h"
20#include "llvm/Frontend/Debug/Options.h"
21#include "llvm/Frontend/Driver/CodeGenOptions.h"
22#include "llvm/Support/CodeGen.h"
23#include "llvm/Support/Compression.h"
24#include "llvm/Support/Regex.h"
25#include "llvm/Target/TargetOptions.h"
31namespace Fortran::frontend {
38#define CODEGENOPT(Name, Bits, Default) unsigned Name : Bits;
39#define ENUM_CODEGENOPT(Name, Type, Bits, Default)
40#include "flang/Frontend/CodeGenOptions.def"
43#define CODEGENOPT(Name, Bits, Default)
44#define ENUM_CODEGENOPT(Name, Type, Bits, Default) unsigned Name : Bits;
45#include "flang/Frontend/CodeGenOptions.def"
98 enum class RemarkKind {
109 llvm::CodeObjectVersionKind::COV_None;
113 RemarkKind Kind = RemarkKind::RK_Missing;
115 std::shared_ptr<llvm::Regex> Regex;
188 return getProfileInstr() == llvm::driver::ProfileClangInstr;
193 return getProfileInstr() == llvm::driver::ProfileIRInstr;
198 return getProfileInstr() == llvm::driver::ProfileCSIRInstr;
202 return getProfileUse() == llvm::driver::ProfileIRInstr ||
203 getProfileUse() == llvm::driver::ProfileCSIRInstr;
207 return getProfileUse() == llvm::driver::ProfileCSIRInstr;
236#define CODEGENOPT(Name, Bits, Default)
237#define ENUM_CODEGENOPT(Name, Type, Bits, Default) \
238 Type get##Name() const { return static_cast<Type>(Name); } \
239 void set##Name(Type Value) { Name = static_cast<unsigned>(Value); }
240#include "flang/Frontend/CodeGenOptions.def"
245std::optional<llvm::CodeModel::Model> getCodeModel(llvm::StringRef
string);
Definition CodeGenOptions.h:35
Definition CodeGenOptions.h:50
std::string MemoryProfileUsePath
Name of the profile file to use as input for -fmemory-profile-use.
Definition CodeGenOptions.h:167
std::string PreferVectorWidth
The prefered vector width, if requested by -mprefer-vector-width.
Definition CodeGenOptions.h:57
std::string OptRecordPasses
Definition CodeGenOptions.h:87
std::vector< std::string > DependentLibs
Options to add to the linker for the object file.
Definition CodeGenOptions.h:93
std::string SplitDwarfFile
Definition CodeGenOptions.h:178
bool hasProfileClangInstr() const
Check if Clang profile instrumenation is on.
Definition CodeGenOptions.h:187
std::string SplitDwarfOutput
Output filename for the split debug info, not used in the skeleton CU.
Definition CodeGenOptions.h:181
OptRemark OptimizationRemark
Definition CodeGenOptions.h:136
llvm::CodeObjectVersionKind CodeObjectVersion
Code object version for AMDGPU.
Definition CodeGenOptions.h:108
OptRemark OptimizationRemarkAnalysis
Definition CodeGenOptions.h:149
std::string InstrProfileOutput
Definition CodeGenOptions.h:164
std::string ProfileRemappingFile
Definition CodeGenOptions.h:174
std::string Reciprocals
List of reciprocal estimate sub-options.
Definition CodeGenOptions.h:60
std::vector< std::string > LLVMPassPlugins
The paths to the pass plugins that were registered using -fpass-plugin.
Definition CodeGenOptions.h:54
std::string SampleProfileFile
Name of the profile file to use with -fprofile-sample-use.
Definition CodeGenOptions.h:184
std::string OptRecordFormat
The format used for serializing remarks (default: YAML)
Definition CodeGenOptions.h:90
std::optional< std::string > SaveTempsDir
The directory where temp files are stored if specified by -save-temps.
Definition CodeGenOptions.h:71
flangomp::DoConcurrentMappingKind DoConcurrentMappingKind
Definition CodeGenOptions.h:160
bool hasProfileCSIRInstr() const
Check if CS IR level profile instrumentation is on.
Definition CodeGenOptions.h:197
std::string CodeModel
The code model to use (-mcmodel).
Definition CodeGenOptions.h:152
std::vector< std::string > OffloadObjects
Definition CodeGenOptions.h:64
ComplexRangeKind
Controls the various implementations for complex division.
Definition CodeGenOptions.h:211
@ CX_Full
Definition CodeGenOptions.h:215
@ CX_None
No range rule is enabled.
Definition CodeGenOptions.h:229
@ CX_Basic
Definition CodeGenOptions.h:226
@ CX_Improved
Definition CodeGenOptions.h:221
std::string ProfileInstrumentUsePath
Name of the profile file to use as input for -fprofile-instr-use.
Definition CodeGenOptions.h:170
std::string DwarfDebugFlags
Definition CodeGenOptions.h:79
std::optional< std::string > RecordCommandLine
The string containing the commandline for the llvm.commandline metadata.
Definition CodeGenOptions.h:74
std::string OptRecordFile
Definition CodeGenOptions.h:83
std::vector< std::string > BuiltinBCLibs
Definition CodeGenOptions.h:68
uint64_t LargeDataThreshold
Definition CodeGenOptions.h:156
OptRemark OptimizationRemarkMissed
Definition CodeGenOptions.h:142
bool hasProfileIRInstr() const
Check if IR level profile instrumentation is on.
Definition CodeGenOptions.h:192
bool hasProfileCSIRUse() const
Check if CSIR profile use is on.
Definition CodeGenOptions.h:206
bool hasProfileIRUse() const
Check if IR level profile use is on.
Definition CodeGenOptions.h:201