LLVM 19.0.0git
Functions | Variables
OcamlGCPrinter.cpp File Reference
#include "llvm/ADT/STLExtras.h"
#include "llvm/ADT/SmallString.h"
#include "llvm/ADT/Twine.h"
#include "llvm/CodeGen/AsmPrinter.h"
#include "llvm/CodeGen/GCMetadata.h"
#include "llvm/CodeGen/GCMetadataPrinter.h"
#include "llvm/IR/BuiltinGCs.h"
#include "llvm/IR/DataLayout.h"
#include "llvm/IR/Function.h"
#include "llvm/IR/Mangler.h"
#include "llvm/IR/Module.h"
#include "llvm/MC/MCContext.h"
#include "llvm/MC/MCDirectives.h"
#include "llvm/MC/MCStreamer.h"
#include "llvm/Support/ErrorHandling.h"
#include "llvm/Target/TargetLoweringObjectFile.h"
#include <cctype>
#include <cstddef>
#include <cstdint>
#include <string>

Go to the source code of this file.

Functions

static void EmitCamlGlobal (const Module &M, AsmPrinter &AP, const char *Id)
 

Variables

static GCMetadataPrinterRegistry::Add< OcamlGCMetadataPrinter > Y ("ocaml", "ocaml 3.10-compatible collector")
 

Function Documentation

◆ EmitCamlGlobal()

static void EmitCamlGlobal ( const Module M,
AsmPrinter AP,
const char Id 
)
static

Variable Documentation

◆ Y

GCMetadataPrinterRegistry::Add< OcamlGCMetadataPrinter > Y("ocaml", "ocaml 3.10-compatible collector") ( "ocaml"  ,
"ocaml 3.10-compatible collector"   
)
static

Referenced by llvm::AbsoluteDifference(), llvm::AddOverflow(), llvm::ScheduleDAGTopologicalSort::AddPred(), llvm::ScheduleDAGTopologicalSort::AddPredQueued(), annotateNonNullAndDereferenceable(), AMDGPUCombinerHelper::applyFoldableFneg(), llvm::AMDGPURegisterBankInfo::applyMappingImpl(), llvm::CombinerHelper::applyXorOfAndWithSameReg(), llvm::TargetLowering::BuildSDIV(), llvm::TargetLowering::BuildUDIV(), canonicalizeBitSelect(), canonicalizeSaturatedAdd(), CheckAndCreateOffsetAdd(), checkForNegativeOperand(), clusterSortPtrAccesses(), collectBitParts(), combineAddOrSubToADCOrSBB(), combineAndMaskToShift(), combineAndNotIntoANDNP(), combineAndShuffleNot(), combineLogicBlendIntoConditionalNegate(), combineLogicBlendIntoPBLENDV(), combineShiftOfShiftedLogic(), combineVectorSizedSetCCEquality(), combineVWADDSUBWSelect(), llvm::InstCombinerImpl::commonIDivTransforms(), llvm::InstCombinerImpl::commonShiftTransforms(), computeKnownBitsFromCmp(), llvm::codeview::consume(), llvm::InstCombinerImpl::convertOrOfShiftsToFunnelShift(), decomposeBitTestICmp(), llvm::MCDwarfFrameEmitter::Emit(), emitTransformedIndex(), llvm::TargetLowering::expandFunnelShift(), expandLerpIntrinsic(), expandPowIntrinsic(), expandUDivOrURem(), expandVPFunnelShift(), factorizeFAddFSub(), factorizeLerp(), factorizeMathWithShlOps(), findGCD(), llvm::findValuesAffectedByCondition(), finishAdjustingBasicBlocksAndLandingPads(), llvm::InstCombinerImpl::foldAddWithConstant(), foldAndOrOfICmpsWithConstEq(), llvm::InstCombinerImpl::foldBinOpShiftWithShift(), foldBitCastBitwiseLogic(), foldBitOrderCrossLogicOp(), foldBitwiseLogicWithIntrinsics(), foldBoxMultiply(), foldCastShuffle(), foldComplexAndOrPatterns(), foldCSELOfCSEL(), foldCtpop(), foldCttzCtlz(), foldFDivSqrtDivisor(), llvm::InstCombinerImpl::foldFMulReassoc(), llvm::InstCombinerImpl::foldICmpAddConstant(), llvm::InstCombinerImpl::foldICmpAndConstant(), llvm::InstCombinerImpl::foldICmpBinOp(), llvm::InstCombinerImpl::foldICmpDivConstant(), llvm::InstCombinerImpl::foldICmpEquality(), llvm::InstCombinerImpl::foldICmpInstWithConstant(), foldICmpShlOne(), llvm::InstCombinerImpl::foldICmpSubConstant(), llvm::InstCombinerImpl::foldICmpTruncConstant(), llvm::InstCombinerImpl::foldICmpTruncWithTruncOrExt(), llvm::InstCombinerImpl::foldICmpUDivConstant(), llvm::InstCombinerImpl::foldICmpUsingBoolRange(), llvm::InstCombinerImpl::foldICmpWithDominatingICmp(), foldICmpWithHighBitMask(), llvm::InstCombinerImpl::foldICmpWithMinMax(), llvm::InstCombinerImpl::foldICmpWithZero(), llvm::InstCombinerImpl::foldICmpWithZextOrSext(), llvm::InstCombinerImpl::foldICmpXorConstant(), foldIdentityExtractShuffle(), foldIdentityPaddedShuffles(), foldIDivShl(), llvm::InstCombinerImpl::foldIRemByPowerOfTwoToBitTest(), foldLogicOfShifts(), foldMinMaxSharedOp(), foldMulShl1(), llvm::InstCombinerImpl::foldMultiplicationOverflowCheck(), foldNotXor(), llvm::InstCombinerImpl::foldPowiReassoc(), foldSelectBinOpIdentity(), foldSelectICmpAndAnd(), foldSelectICmpAndBinOp(), foldSelectICmpLshrAshr(), llvm::InstCombinerImpl::foldSelectOpOp(), llvm::InstCombinerImpl::foldSelectShuffle(), foldSelectShuffleOfSelectShuffle(), foldSelectWithBinaryOp(), foldSelectZeroOrMul(), foldSetCCWithFunnelShift(), foldShiftIntoShiftInAnotherHandOfAndInICmp(), foldShiftOfShiftedBinOp(), foldShuffleOfConcatUndefs(), foldShuffleOfUnaryOps(), foldSubOfMinMax(), foldToUnsignedSaturatedAdd(), llvm::InstCombinerImpl::foldVectorBinop(), foldVectorCmp(), genShXAddAddShift(), llvm::ScalarEvolution::getAddExpr(), getHashValueImpl(), llvm::BasicTTIImplBase< T >::getIntrinsicInstrCost(), getKnownBitsFromAndXorOr(), getKnownSign(), getKnownSignOrZero(), getMad(), llvm::TargetLowering::getNegatedExpression(), handleValVerMetadata(), llvm::AArch64TargetLowering::hasAndNot(), llvm::LoongArchTargetLowering::hasAndNot(), llvm::VETargetLowering::hasAndNot(), llvm::X86TargetLowering::hasAndNot(), llvm::LoongArchTargetLowering::hasAndNotCompare(), llvm::RISCVTargetLowering::hasAndNotCompare(), llvm::X86TargetLowering::hasAndNotCompare(), llvm::MipsTargetLowering::hasBitTest(), llvm::RISCVTargetLowering::hasBitTest(), haveNoCommonBitsSetSpecialCases(), hoistInsEltConst(), INITIALIZE_PASS(), llvm::GCNTTIImpl::instCombineIntrinsic(), llvm::isCheckForZeroAndMulWithOverflow(), isDivZero(), llvm::Constant::isElementWiseEqual(), isEqualImpl(), llvm::isKnownNegation(), isNonZeroAdd(), isNonZeroMul(), isNonZeroSub(), llvm::isSplatValue(), llvm::AMDGPULegalizerInfo::legalizeFastUnsafeFDIV64(), llvm::AMDGPULegalizerInfo::legalizeFlogCommon(), llvm::AMDGPULegalizerInfo::legalizeUnsignedDIV_REM32Impl(), LLVMInitializeAArch64AsmParser(), LLVMInitializeAArch64AsmPrinter(), LLVMInitializeAArch64Target(), LLVMInitializeAMDGPUTarget(), LLVMInitializeARMAsmParser(), LLVMInitializeARMAsmPrinter(), LLVMInitializeARMTarget(), LLVMInitializeARMTargetInfo(), LLVMInitializeBPFAsmParser(), LLVMInitializeBPFAsmPrinter(), LLVMInitializeBPFTarget(), LLVMInitializeBPFTargetInfo(), LLVMInitializeLoongArchAsmParser(), LLVMInitializeLoongArchAsmPrinter(), LLVMInitializeLoongArchTarget(), LLVMInitializeLoongArchTargetInfo(), LLVMInitializeMipsAsmParser(), LLVMInitializeMipsAsmPrinter(), LLVMInitializeMipsTarget(), LLVMInitializeMipsTargetInfo(), LLVMInitializeNVPTXAsmPrinter(), LLVMInitializeNVPTXTarget(), LLVMInitializeNVPTXTargetInfo(), LLVMInitializePowerPCTargetInfo(), LLVMInitializeRISCVAsmParser(), LLVMInitializeRISCVAsmPrinter(), LLVMInitializeRISCVTarget(), LLVMInitializeRISCVTargetInfo(), LLVMInitializeSparcAsmPrinter(), LLVMInitializeSparcTarget(), LLVMInitializeSparcTargetInfo(), LLVMInitializeSparcTargetMC(), LLVMInitializeSPIRVAsmPrinter(), LLVMInitializeSPIRVTarget(), LLVMInitializeSPIRVTargetInfo(), LLVMInitializeWebAssemblyAsmParser(), LLVMInitializeWebAssemblyAsmPrinter(), LLVMInitializeWebAssemblyTarget(), LLVMInitializeWebAssemblyTargetInfo(), LLVMInitializeX86AsmParser(), LLVMInitializeX86AsmPrinter(), LLVMInitializeX86Target(), LLVMInitializeX86TargetInfo(), loadYAML(), LowerADDSAT_SUBSAT(), lowerFCOPYSIGN32(), lowerFCOPYSIGN64(), llvm::AMDGPUTargetLowering::LowerFLOGCommon(), lowerFMAXIMUM_FMINIMUM(), LowerFMINIMUM_FMAXIMUM(), llvm::AMDGPUTargetLowering::LowerFREM(), llvm::LegalizerHelper::lowerFunnelShiftAsShifts(), llvm::LegalizerHelper::lowerFunnelShiftWithInverse(), LowerSDIV_v4i8(), llvm::VETargetLowering::lowerToVVP(), llvm::HexagonTargetLowering::LowerUAddSubO(), llvm::HexagonTargetLowering::LowerUAddSubOCarry(), llvm::AMDGPUTargetLowering::LowerUDIVREM(), llvm::CombinerHelper::matchCombineFAddFMAFMulToFMadOrFMA(), llvm::CombinerHelper::matchCombineFAddFpExtFMulToFMadOrFMAAggressive(), llvm::CombinerHelper::matchCombineFSubFpExtFNegFMulToFMadOrFMA(), llvm::CombinerHelper::matchFunnelShiftToRotate(), llvm::CombinerHelper::matchHoistLogicOpWithSameOpcodeHands(), matchIntPart(), matchLogicBlend(), llvm::CombinerHelper::matchRedundantBinOpInEquality(), llvm::CombinerHelper::matchRedundantNegOperands(), llvm::CombinerHelper::matchSubAddSameReg(), llvm::CombinerHelper::matchXorOfAndWithSameReg(), mergeEltWithShuffle(), MinOptional(), llvm::MulOverflow(), narrowExtractedVectorBinOp(), narrowInsElt(), narrowUDivURem(), narrowVectorSelect(), operator|=(), optimizeDivRem(), optimizeIncrementingWhile(), llvm::IRSimilarity::IRSimilarityCandidate::overlap(), llvm::object::DirectX::PSVRuntimeInfo::parse(), llvm::SITargetLowering::passSpecialInputs(), llvm::AMDGPUCallLowering::passSpecialInputs(), performAddCombineSubShift(), llvm::ARMTargetLowering::PerformCMOVToBFICombine(), performConcatVectorsCombine(), pushAddIntoCmovOfConsts(), reassociateFCmps(), reassociateForUses(), reassociateMinMaxWithConstantInOperand(), ReconstructTruncateFromBuildVector(), llvm::SaturatingAdd(), llvm::SaturatingMultiply(), llvm::SaturatingMultiplyAdd(), scalarizeBinOpOfSplats(), llvm::X86TargetLowering::shouldFoldMaskToVariableShiftPair(), llvm::TargetLoweringBase::shouldProduceAndByConstByHoistingConstFromShiftsLHSOfAnd(), llvm::AArch64TargetLowering::shouldProduceAndByConstByHoistingConstFromShiftsLHSOfAnd(), llvm::X86TargetLowering::shouldProduceAndByConstByHoistingConstFromShiftsLHSOfAnd(), simplifyAddInst(), simplifyAndCommutative(), simplifyAndInst(), llvm::InstCombinerImpl::simplifyBinOpSplats(), simplifyCmpSelOfMaxMin(), llvm::TargetLowering::SimplifyDemandedBits(), llvm::InstCombinerImpl::SimplifyDemandedUseBits(), llvm::InstCombinerImpl::SimplifyDemandedVectorElts(), llvm::SelectionDAG::simplifyFPBinop(), simplifyICmpWithBinOp(), simplifyICmpWithBinOpOnLHS(), simplifyIRemMulShl(), simplifyLShrInst(), simplifyOrInst(), simplifyOrLogic(), simplifyRecipe(), simplifySelectBitTest(), simplifySelectInst(), simplifySelectWithICmpCond(), llvm::SelectionDAG::simplifyShift(), simplifySubInst(), simplifyUnsignedRangeCheck(), simplifyXorInst(), strongerOrdering(), llvm::SubOverflow(), takeLog2(), tryLowerToSLI(), llvm::InstCombinerImpl::visitAnd(), llvm::InstCombinerImpl::visitAShr(), llvm::InstCombinerImpl::visitBitCast(), llvm::InstCombinerImpl::visitBranchInst(), llvm::InstCombinerImpl::visitCallInst(), llvm::InstCombinerImpl::visitExtractElementInst(), llvm::InstCombinerImpl::visitFAdd(), llvm::InstCombinerImpl::visitFCmpInst(), llvm::InstCombinerImpl::visitFDiv(), llvm::InstCombinerImpl::visitFMul(), llvm::InstCombinerImpl::visitFNeg(), llvm::InstCombinerImpl::visitFPTrunc(), llvm::InstCombinerImpl::visitFSub(), llvm::InstCombinerImpl::visitGetElementPtrInst(), llvm::InstCombinerImpl::visitICmpInst(), llvm::InstCombinerImpl::visitLShr(), llvm::InstCombinerImpl::visitMul(), llvm::InstCombinerImpl::visitOr(), visitORCommutative(), llvm::InstCombinerImpl::visitSDiv(), llvm::InstCombinerImpl::visitSExt(), llvm::InstCombinerImpl::visitShl(), llvm::InstCombinerImpl::visitShuffleVectorInst(), llvm::InstCombinerImpl::visitSRem(), llvm::InstCombinerImpl::visitSub(), llvm::InstCombinerImpl::visitTrunc(), and llvm::InstCombinerImpl::visitXor().