mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-26 04:32:44 +01:00
150 lines
3.7 KiB
C
150 lines
3.7 KiB
C
|
//===-- CommandFlags.h - Command Line Flags Interface -----------*- C++ -*-===//
|
||
|
//
|
||
|
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
||
|
// See https://llvm.org/LICENSE.txt for license information.
|
||
|
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||
|
//
|
||
|
//===----------------------------------------------------------------------===//
|
||
|
//
|
||
|
// This file contains codegen-specific flags that are shared between different
|
||
|
// command line tools. The tools "llc" and "opt" both use this file to prevent
|
||
|
// flag duplication.
|
||
|
//
|
||
|
//===----------------------------------------------------------------------===//
|
||
|
|
||
|
#include "llvm/ADT/StringExtras.h"
|
||
|
#include "llvm/IR/Instructions.h"
|
||
|
#include "llvm/IR/Intrinsics.h"
|
||
|
#include "llvm/IR/Module.h"
|
||
|
#include "llvm/MC/MCTargetOptionsCommandFlags.h"
|
||
|
#include "llvm/MC/SubtargetFeature.h"
|
||
|
#include "llvm/Support/CodeGen.h"
|
||
|
#include "llvm/Support/CommandLine.h"
|
||
|
#include "llvm/Support/Host.h"
|
||
|
#include "llvm/Target/TargetMachine.h"
|
||
|
#include "llvm/Target/TargetOptions.h"
|
||
|
#include <string>
|
||
|
|
||
|
namespace llvm {
|
||
|
|
||
|
namespace codegen {
|
||
|
|
||
|
std::string getMArch();
|
||
|
|
||
|
std::string getMCPU();
|
||
|
|
||
|
std::vector<std::string> getMAttrs();
|
||
|
|
||
|
Reloc::Model getRelocModel();
|
||
|
Optional<Reloc::Model> getExplicitRelocModel();
|
||
|
|
||
|
ThreadModel::Model getThreadModel();
|
||
|
|
||
|
CodeModel::Model getCodeModel();
|
||
|
Optional<CodeModel::Model> getExplicitCodeModel();
|
||
|
|
||
|
llvm::ExceptionHandling getExceptionModel();
|
||
|
|
||
|
CodeGenFileType getFileType();
|
||
|
Optional<CodeGenFileType> getExplicitFileType();
|
||
|
|
||
|
CodeGenFileType getFileType();
|
||
|
|
||
|
llvm::FramePointer::FP getFramePointerUsage();
|
||
|
|
||
|
bool getEnableUnsafeFPMath();
|
||
|
|
||
|
bool getEnableNoInfsFPMath();
|
||
|
|
||
|
bool getEnableNoNaNsFPMath();
|
||
|
|
||
|
bool getEnableNoSignedZerosFPMath();
|
||
|
|
||
|
bool getEnableNoTrappingFPMath();
|
||
|
|
||
|
llvm::FPDenormal::DenormalMode getDenormalFPMath();
|
||
|
|
||
|
bool getEnableHonorSignDependentRoundingFPMath();
|
||
|
|
||
|
llvm::FloatABI::ABIType getFloatABIForCalls();
|
||
|
|
||
|
llvm::FPOpFusion::FPOpFusionMode getFuseFPOps();
|
||
|
|
||
|
bool getDontPlaceZerosInBSS();
|
||
|
|
||
|
bool getEnableGuaranteedTailCallOpt();
|
||
|
|
||
|
bool getDisableTailCalls();
|
||
|
|
||
|
bool getStackSymbolOrdering();
|
||
|
|
||
|
unsigned getOverrideStackAlignment();
|
||
|
|
||
|
bool getStackRealign();
|
||
|
|
||
|
std::string getTrapFuncName();
|
||
|
|
||
|
bool getUseCtors();
|
||
|
|
||
|
bool getRelaxELFRelocations();
|
||
|
|
||
|
bool getDataSections();
|
||
|
Optional<bool> getExplicitDataSections();
|
||
|
|
||
|
bool getFunctionSections();
|
||
|
Optional<bool> getExplicitFunctionSections();
|
||
|
|
||
|
std::string getBBSections();
|
||
|
|
||
|
unsigned getTLSSize();
|
||
|
|
||
|
bool getEmulatedTLS();
|
||
|
|
||
|
bool getUniqueSectionNames();
|
||
|
|
||
|
bool getUniqueBBSectionNames();
|
||
|
|
||
|
llvm::EABI getEABIVersion();
|
||
|
|
||
|
llvm::DebuggerKind getDebuggerTuningOpt();
|
||
|
|
||
|
bool getEnableStackSizeSection();
|
||
|
|
||
|
bool getEnableAddrsig();
|
||
|
|
||
|
bool getEmitCallSiteInfo();
|
||
|
|
||
|
bool getEnableDebugEntryValues();
|
||
|
|
||
|
bool getForceDwarfFrameSection();
|
||
|
|
||
|
/// Create this object with static storage to register codegen-related command
|
||
|
/// line options.
|
||
|
struct RegisterCodeGenFlags {
|
||
|
RegisterCodeGenFlags();
|
||
|
};
|
||
|
|
||
|
llvm::BasicBlockSection getBBSectionsMode(llvm::TargetOptions &Options);
|
||
|
|
||
|
// Common utility function tightly tied to the options listed here. Initializes
|
||
|
// a TargetOptions object with CodeGen flags and returns it.
|
||
|
TargetOptions InitTargetOptionsFromCodeGenFlags();
|
||
|
|
||
|
std::string getCPUStr();
|
||
|
|
||
|
std::string getFeaturesStr();
|
||
|
|
||
|
std::vector<std::string> getFeatureList();
|
||
|
|
||
|
void renderBoolStringAttr(AttrBuilder &B, StringRef Name, bool Val);
|
||
|
|
||
|
/// Set function attributes of function \p F based on CPU, Features, and command
|
||
|
/// line flags.
|
||
|
void setFunctionAttributes(StringRef CPU, StringRef Features, Function &F);
|
||
|
|
||
|
/// Set function attributes of functions in Module M based on CPU,
|
||
|
/// Features, and command line flags.
|
||
|
void setFunctionAttributes(StringRef CPU, StringRef Features, Module &M);
|
||
|
} // namespace codegen
|
||
|
} // namespace llvm
|