123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192 |
- #pragma once
- #ifdef __GNUC__
- #pragma GCC diagnostic push
- #pragma GCC diagnostic ignored "-Wunused-parameter"
- #endif
- //===-- 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.
- //
- //===----------------------------------------------------------------------===//
- #ifndef LLVM_CODEGEN_COMMANDFLAGS_H
- #define LLVM_CODEGEN_COMMANDFLAGS_H
- #include "llvm/ADT/FloatingPointMode.h"
- #include "llvm/ADT/StringExtras.h"
- #include "llvm/ADT/Triple.h"
- #include "llvm/IR/Instructions.h"
- #include "llvm/IR/Intrinsics.h"
- #include "llvm/MC/MCTargetOptionsCommandFlags.h"
- #include "llvm/Support/CodeGen.h"
- #include "llvm/Target/TargetOptions.h"
- #include <string>
- #include <vector>
- namespace llvm {
- class Module;
- 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();
- Optional<CodeGenFileType> getExplicitFileType();
- CodeGenFileType getFileType();
- FramePointerKind getFramePointerUsage();
- bool getEnableUnsafeFPMath();
- bool getEnableNoInfsFPMath();
- bool getEnableNoNaNsFPMath();
- bool getEnableNoSignedZerosFPMath();
- bool getEnableNoTrappingFPMath();
- DenormalMode::DenormalModeKind getDenormalFPMath();
- DenormalMode::DenormalModeKind getDenormalFP32Math();
- bool getEnableHonorSignDependentRoundingFPMath();
- llvm::FloatABI::ABIType getFloatABIForCalls();
- llvm::FPOpFusion::FPOpFusionMode getFuseFPOps();
- SwiftAsyncFramePointerMode getSwiftAsyncFramePointer();
- bool getDontPlaceZerosInBSS();
- bool getEnableGuaranteedTailCallOpt();
- bool getEnableAIXExtendedAltivecABI();
- 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();
- bool getIgnoreXCOFFVisibility();
- bool getXCOFFTracebackTable();
- std::string getBBSections();
- unsigned getTLSSize();
- bool getEmulatedTLS();
- bool getUniqueSectionNames();
- bool getUniqueBasicBlockSectionNames();
- llvm::EABI getEABIVersion();
- llvm::DebuggerKind getDebuggerTuningOpt();
- bool getEnableStackSizeSection();
- bool getEnableAddrsig();
- bool getEmitCallSiteInfo();
- bool getEnableMachineFunctionSplitter();
- bool getEnableDebugEntryValues();
- bool getValueTrackingVariableLocations();
- Optional<bool> getExplicitValueTrackingVariableLocations();
- bool getForceDwarfFrameSection();
- bool getXRayOmitFunctionIndex();
- bool getDebugStrictDwarf();
- unsigned getAlignLoops();
- /// 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.
- /// \p TheTriple is used to determine the default value for options if
- /// options are not explicitly specified. If those triple dependant options
- /// value do not have effect for your component, a default Triple() could be
- /// passed in.
- TargetOptions InitTargetOptionsFromCodeGenFlags(const llvm::Triple &TheTriple);
- 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);
- /// Should value-tracking variable locations / instruction referencing be
- /// enabled by default for this triple?
- bool getDefaultValueTrackingVariableLocations(const llvm::Triple &T);
- } // namespace codegen
- } // namespace llvm
- #endif // LLVM_CODEGEN_COMMANDFLAGS_H
- #ifdef __GNUC__
- #pragma GCC diagnostic pop
- #endif
|