clang 20.0.0git
Namespaces | Macros | Functions | Variables
BackendUtil.cpp File Reference
#include "clang/CodeGen/BackendUtil.h"
#include "BackendConsumer.h"
#include "LinkInModulesPass.h"
#include "clang/Basic/CodeGenOptions.h"
#include "clang/Basic/Diagnostic.h"
#include "clang/Basic/LangOptions.h"
#include "clang/Basic/TargetOptions.h"
#include "clang/Frontend/FrontendDiagnostic.h"
#include "clang/Frontend/Utils.h"
#include "clang/Lex/HeaderSearchOptions.h"
#include "llvm/ADT/SmallSet.h"
#include "llvm/ADT/StringExtras.h"
#include "llvm/ADT/StringSwitch.h"
#include "llvm/Analysis/AliasAnalysis.h"
#include "llvm/Analysis/GlobalsModRef.h"
#include "llvm/Analysis/TargetLibraryInfo.h"
#include "llvm/Analysis/TargetTransformInfo.h"
#include "llvm/Bitcode/BitcodeReader.h"
#include "llvm/Bitcode/BitcodeWriter.h"
#include "llvm/Bitcode/BitcodeWriterPass.h"
#include "llvm/CodeGen/RegAllocRegistry.h"
#include "llvm/CodeGen/SchedulerRegistry.h"
#include "llvm/CodeGen/TargetSubtargetInfo.h"
#include "llvm/Frontend/Driver/CodeGenOptions.h"
#include "llvm/IR/DataLayout.h"
#include "llvm/IR/DebugInfo.h"
#include "llvm/IR/LegacyPassManager.h"
#include "llvm/IR/Module.h"
#include "llvm/IR/ModuleSummaryIndex.h"
#include "llvm/IR/PassManager.h"
#include "llvm/IR/Verifier.h"
#include "llvm/IRPrinter/IRPrintingPasses.h"
#include "llvm/LTO/LTOBackend.h"
#include "llvm/MC/MCAsmInfo.h"
#include "llvm/MC/TargetRegistry.h"
#include "llvm/Object/OffloadBinary.h"
#include "llvm/Passes/PassBuilder.h"
#include "llvm/Passes/PassPlugin.h"
#include "llvm/Passes/StandardInstrumentations.h"
#include "llvm/ProfileData/InstrProfCorrelator.h"
#include "llvm/Support/BuryPointer.h"
#include "llvm/Support/CommandLine.h"
#include "llvm/Support/MemoryBuffer.h"
#include "llvm/Support/PrettyStackTrace.h"
#include "llvm/Support/TimeProfiler.h"
#include "llvm/Support/Timer.h"
#include "llvm/Support/ToolOutputFile.h"
#include "llvm/Support/VirtualFileSystem.h"
#include "llvm/Support/raw_ostream.h"
#include "llvm/Target/TargetMachine.h"
#include "llvm/Target/TargetOptions.h"
#include "llvm/TargetParser/SubtargetFeature.h"
#include "llvm/TargetParser/Triple.h"
#include "llvm/Transforms/HipStdPar/HipStdPar.h"
#include "llvm/Transforms/IPO/EmbedBitcodePass.h"
#include "llvm/Transforms/IPO/LowerTypeTests.h"
#include "llvm/Transforms/IPO/ThinLTOBitcodeWriter.h"
#include "llvm/Transforms/InstCombine/InstCombine.h"
#include "llvm/Transforms/Instrumentation.h"
#include "llvm/Transforms/Instrumentation/AddressSanitizer.h"
#include "llvm/Transforms/Instrumentation/AddressSanitizerOptions.h"
#include "llvm/Transforms/Instrumentation/BoundsChecking.h"
#include "llvm/Transforms/Instrumentation/DataFlowSanitizer.h"
#include "llvm/Transforms/Instrumentation/GCOVProfiler.h"
#include "llvm/Transforms/Instrumentation/HWAddressSanitizer.h"
#include "llvm/Transforms/Instrumentation/InstrProfiling.h"
#include "llvm/Transforms/Instrumentation/KCFI.h"
#include "llvm/Transforms/Instrumentation/LowerAllowCheckPass.h"
#include "llvm/Transforms/Instrumentation/MemProfiler.h"
#include "llvm/Transforms/Instrumentation/MemorySanitizer.h"
#include "llvm/Transforms/Instrumentation/NumericalStabilitySanitizer.h"
#include "llvm/Transforms/Instrumentation/PGOInstrumentation.h"
#include "llvm/Transforms/Instrumentation/SanitizerBinaryMetadata.h"
#include "llvm/Transforms/Instrumentation/SanitizerCoverage.h"
#include "llvm/Transforms/Instrumentation/ThreadSanitizer.h"
#include "llvm/Transforms/ObjCARC.h"
#include "llvm/Transforms/Scalar/EarlyCSE.h"
#include "llvm/Transforms/Scalar/GVN.h"
#include "llvm/Transforms/Scalar/JumpThreading.h"
#include "llvm/Transforms/Utils/Debugify.h"
#include "llvm/Transforms/Utils/ModuleUtils.h"
#include <memory>
#include <optional>
#include "llvm/Support/Extension.def"

Go to the source code of this file.

Namespaces

namespace  llvm
 Diagnostic wrappers for TextAPI types for error reporting.
 

Macros

#define HANDLE_EXTENSION(Ext)    llvm::PassPluginLibraryInfo get##Ext##PluginInfo();
 
#define HANDLE_EXTENSION(Ext)    get##Ext##PluginInfo().RegisterPassBuilderCallbacks(PB);
 

Functions

static cl::opt< boolllvm::ClSanitizeOnOptimizerEarlyEP ("sanitizer-early-opt-ep", cl::Optional, cl::desc("Insert sanitizers on OptimizerEarlyEP."))
 
static cl::opt< PGOOptions::ColdFuncOpt > llvm::ClPGOColdFuncAttr ("pgo-cold-func-opt", cl::init(PGOOptions::ColdFuncOpt::Default), cl::Hidden, cl::desc("Function attribute to apply to cold functions as determined by PGO"), cl::values(clEnumValN(PGOOptions::ColdFuncOpt::Default, "default", "Default (no attribute)"), clEnumValN(PGOOptions::ColdFuncOpt::OptSize, "optsize", "Mark cold functions with optsize."), clEnumValN(PGOOptions::ColdFuncOpt::MinSize, "minsize", "Mark cold functions with minsize."), clEnumValN(PGOOptions::ColdFuncOpt::OptNone, "optnone", "Mark cold functions with optnone.")))
 
static SanitizerCoverageOptions getSancovOptsFromCGOpts (const CodeGenOptions &CGOpts)
 
static SanitizerBinaryMetadataOptions getSanitizerBinaryMetadataOptions (const CodeGenOptions &CGOpts)
 
static bool asanUseGlobalsGC (const Triple &T, const CodeGenOptions &CGOpts)
 
static std::optional< llvm::CodeModel::Model > getCodeModel (const CodeGenOptions &CodeGenOpts)
 
static CodeGenFileType getCodeGenFileType (BackendAction Action)
 
static bool actionRequiresCodeGen (BackendAction Action)
 
static bool initTargetOptions (DiagnosticsEngine &Diags, llvm::TargetOptions &Options, const CodeGenOptions &CodeGenOpts, const clang::TargetOptions &TargetOpts, const LangOptions &LangOpts, const HeaderSearchOptions &HSOpts)
 
static std::optional< GCOVOptions > getGCOVOptions (const CodeGenOptions &CodeGenOpts, const LangOptions &LangOpts)
 
static std::optional< InstrProfOptions > getInstrProfOptions (const CodeGenOptions &CodeGenOpts, const LangOptions &LangOpts)
 
static void setCommandLineOpts (const CodeGenOptions &CodeGenOpts)
 
static OptimizationLevel mapToLevel (const CodeGenOptions &Opts)
 
static void addKCFIPass (const Triple &TargetTriple, const LangOptions &LangOpts, PassBuilder &PB)
 
static void addSanitizers (const Triple &TargetTriple, const CodeGenOptions &CodeGenOpts, const LangOptions &LangOpts, PassBuilder &PB)
 
static void runThinLTOBackend (DiagnosticsEngine &Diags, ModuleSummaryIndex *CombinedIndex, llvm::Module *M, const HeaderSearchOptions &HeaderOpts, const CodeGenOptions &CGOpts, const clang::TargetOptions &TOpts, const LangOptions &LOpts, std::unique_ptr< raw_pwrite_stream > OS, std::string SampleProfile, std::string ProfileRemapping, BackendAction Action)
 

Variables

cl::opt< boolllvm::PrintPipelinePasses
 
cl::opt< InstrProfCorrelator::ProfCorrelatorKind > llvm::ProfileCorrelate
 

Macro Definition Documentation

◆ HANDLE_EXTENSION [1/2]

#define HANDLE_EXTENSION (   Ext)     llvm::PassPluginLibraryInfo get##Ext##PluginInfo();

Definition at line 95 of file BackendUtil.cpp.

◆ HANDLE_EXTENSION [2/2]

#define HANDLE_EXTENSION (   Ext)     get##Ext##PluginInfo().RegisterPassBuilderCallbacks(PB);

Definition at line 95 of file BackendUtil.cpp.

Function Documentation

◆ actionRequiresCodeGen()

static bool actionRequiresCodeGen ( BackendAction  Action)
static

◆ addKCFIPass()

static void addKCFIPass ( const Triple &  TargetTriple,
const LangOptions LangOpts,
PassBuilder &  PB 
)
static

Definition at line 632 of file BackendUtil.cpp.

References clang::SanitizerSet::has(), and clang::LangOptions::Sanitize.

◆ addSanitizers()

static void addSanitizers ( const Triple &  TargetTriple,
const CodeGenOptions CodeGenOpts,
const LangOptions LangOpts,
PassBuilder &  PB 
)
static

◆ asanUseGlobalsGC()

static bool asanUseGlobalsGC ( const Triple &  T,
const CodeGenOptions CGOpts 
)
static

Definition at line 270 of file BackendUtil.cpp.

References clang::T.

Referenced by addSanitizers().

◆ getCodeGenFileType()

static CodeGenFileType getCodeGenFileType ( BackendAction  Action)
static

◆ getCodeModel()

static std::optional< llvm::CodeModel::Model > getCodeModel ( const CodeGenOptions CodeGenOpts)
static

Definition at line 293 of file BackendUtil.cpp.

References clang::CodeGenOptions::CodeModel.

Referenced by runThinLTOBackend().

◆ getGCOVOptions()

static std::optional< GCOVOptions > getGCOVOptions ( const CodeGenOptions CodeGenOpts,
const LangOptions LangOpts 
)
static

◆ getInstrProfOptions()

static std::optional< InstrProfOptions > getInstrProfOptions ( const CodeGenOptions CodeGenOpts,
const LangOptions LangOpts 
)
static

◆ getSancovOptsFromCGOpts()

static SanitizerCoverageOptions getSancovOptsFromCGOpts ( const CodeGenOptions CGOpts)
static

Definition at line 234 of file BackendUtil.cpp.

Referenced by addSanitizers().

◆ getSanitizerBinaryMetadataOptions()

static SanitizerBinaryMetadataOptions getSanitizerBinaryMetadataOptions ( const CodeGenOptions CGOpts)
static

Definition at line 258 of file BackendUtil.cpp.

Referenced by addSanitizers().

◆ initTargetOptions()

static bool initTargetOptions ( DiagnosticsEngine Diags,
llvm::TargetOptions &  Options,
const CodeGenOptions CodeGenOpts,
const clang::TargetOptions TargetOpts,
const LangOptions LangOpts,
const HeaderSearchOptions HSOpts 
)
static

◆ mapToLevel()

static OptimizationLevel mapToLevel ( const CodeGenOptions Opts)
static

Definition at line 601 of file BackendUtil.cpp.

◆ runThinLTOBackend()

static void runThinLTOBackend ( DiagnosticsEngine Diags,
ModuleSummaryIndex *  CombinedIndex,
llvm::Module *  M,
const HeaderSearchOptions HeaderOpts,
const CodeGenOptions CGOpts,
const clang::TargetOptions TOpts,
const LangOptions LOpts,
std::unique_ptr< raw_pwrite_stream >  OS,
std::string  SampleProfile,
std::string  ProfileRemapping,
BackendAction  Action 
)
static

◆ setCommandLineOpts()

static void setCommandLineOpts ( const CodeGenOptions CodeGenOpts)
static