• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /freebsd-13-stable/contrib/llvm-project/clang/lib/CodeGen/

Lines Matching refs:Constant

1 //===--- CGExprConstant.cpp - Emit LLVM Code from Constant Expressions ----===//
9 // This contains code to emit Constant Expr nodes as LLVM code.
47 CharUnits getAlignment(const llvm::Constant *C) const {
56 CharUnits getSize(const llvm::Constant *C) const {
60 llvm::Constant *getPadding(CharUnits PadSize) const {
67 llvm::Constant *getZeroes(CharUnits ZeroSize) const {
73 /// Incremental builder for an llvm::Constant* holding a struct or array
84 llvm::SmallVector<llvm::Constant*, 32> Elems;
99 static llvm::Constant *buildFrom(CodeGenModule &CGM,
100 ArrayRef<llvm::Constant *> Elems,
115 bool add(llvm::Constant *C, CharUnits Offset, bool AllowOverwrite);
129 llvm::Constant *build(llvm::Type *DesiredTy, bool AllowOversized) const {
142 bool ConstantAggregateBuilder::add(llvm::Constant *C, CharUnits Offset,
251 llvm::Constant *&ToUpdate = Elems[*FirstElemToUpdate];
317 llvm::Constant *C = Elems[Index];
392 static llvm::Constant *
395 SmallVectorImpl<llvm::Constant *> &Elements,
396 llvm::Constant *Filler);
398 llvm::Constant *ConstantAggregateBuilder::buildFrom(
399 CodeGenModule &CGM, ArrayRef<llvm::Constant *> Elems,
416 llvm::Constant *Filler = llvm::Constant::getNullValue(CommonType);
418 SmallVector<llvm::Constant*, 32> ArrayElements;
444 for (llvm::Constant *C : Elems)
449 ArrayRef<llvm::Constant*> UnpackedElems = Elems;
450 llvm::SmallVector<llvm::Constant*, 32> UnpackedElemStorage;
466 llvm::SmallVector<llvm::Constant*, 32> PackedElems;
534 llvm::Constant *Replacement = buildFrom(
553 static llvm::Constant *BuildStruct(ConstantEmitter &Emitter,
555 static llvm::Constant *BuildStruct(ConstantEmitter &Emitter,
568 llvm::Constant *InitExpr, bool AllowOverwrite = false);
570 bool AppendBytes(CharUnits FieldOffsetInChars, llvm::Constant *InitCst,
579 llvm::Constant *Finalize(QualType Ty);
583 const FieldDecl *Field, uint64_t FieldOffset, llvm::Constant *InitCst,
593 llvm::Constant *InitCst,
636 llvm::Constant *FillC = nullptr;
664 llvm::Constant *Val = Emitter.tryEmitPrivateForMemory(Init, ElemType);
726 llvm::Constant *EltInit =
781 llvm::Constant *VTableAddressPoint =
828 llvm::Constant *EltInit =
853 llvm::Constant *ConstStructBuilder::Finalize(QualType Type) {
859 llvm::Constant *ConstStructBuilder::BuildStruct(ConstantEmitter &Emitter,
871 llvm::Constant *ConstStructBuilder::BuildStruct(ConstantEmitter &Emitter,
907 llvm::Constant *C = emitter.tryEmitForInitializer(E->getInitializer(),
927 static llvm::Constant *
930 SmallVectorImpl<llvm::Constant *> &Elements,
931 llvm::Constant *Filler) {
953 llvm::Constant *Initial = llvm::ConstantArray::get(
982 for (llvm::Constant *Elt : Elements)
993 // Constant folding is currently missing support for a few features supported
996 public StmtVisitor<ConstExprEmitter, llvm::Constant*, QualType> {
1009 llvm::Constant *VisitStmt(Stmt *S, QualType T) {
1013 llvm::Constant *VisitConstantExpr(ConstantExpr *CE, QualType T) {
1014 if (llvm::Constant *Result = Emitter.tryEmitConstantExpr(CE))
1019 llvm::Constant *VisitParenExpr(ParenExpr *PE, QualType T) {
1023 llvm::Constant *
1029 llvm::Constant *VisitGenericSelectionExpr(GenericSelectionExpr *GE,
1034 llvm::Constant *VisitChooseExpr(ChooseExpr *CE, QualType T) {
1038 llvm::Constant *VisitCompoundLiteralExpr(CompoundLiteralExpr *E, QualType T) {
1042 llvm::Constant *VisitCastExpr(CastExpr *E, QualType destType) {
1063 SmallVector<llvm::Constant*, 2> Elts;
1176 llvm::Constant *VisitCXXDefaultInitExpr(CXXDefaultInitExpr *DIE, QualType T) {
1182 llvm::Constant *VisitExprWithCleanups(ExprWithCleanups *E, QualType T) {
1186 llvm::Constant *VisitMaterializeTemporaryExpr(MaterializeTemporaryExpr *E,
1191 llvm::Constant *EmitArrayInitialization(InitListExpr *ILE, QualType T) {
1204 llvm::Constant *fillC = nullptr;
1212 SmallVector<llvm::Constant*, 16> Elts;
1221 llvm::Constant *C = Emitter.tryEmitPrivateForMemory(Init, EltType);
1237 llvm::Constant *EmitRecordInitialization(InitListExpr *ILE, QualType T) {
1241 llvm::Constant *VisitImplicitValueInitExpr(ImplicitValueInitExpr* E,
1246 llvm::Constant *VisitInitListExpr(InitListExpr *ILE, QualType T) {
1259 llvm::Constant *VisitDesignatedInitUpdateExpr(DesignatedInitUpdateExpr *E,
1279 llvm::Constant *VisitCXXConstructExpr(CXXConstructExpr *E, QualType Ty) {
1299 llvm::Constant *VisitStringLiteral(StringLiteral *E, QualType T) {
1304 llvm::Constant *VisitObjCEncodeExpr(ObjCEncodeExpr *E, QualType T) {
1318 llvm::Constant *VisitUnaryExtension(const UnaryOperator *E, QualType T) {
1330 llvm::Constant *ConstantEmitter::validateAndPopAbstract(llvm::Constant *C,
1342 llvm::Constant *
1349 llvm::Constant *
1356 llvm::Constant *
1363 llvm::Constant *ConstantEmitter::tryEmitConstantExpr(const ConstantExpr *CE) {
1372 llvm::Constant *Res =
1377 llvm::Constant *
1390 llvm::Constant *
1404 llvm::Constant *ConstantEmitter::tryEmitForInitializer(const VarDecl &D) {
1409 llvm::Constant *ConstantEmitter::tryEmitForInitializer(const Expr *E,
1416 llvm::Constant *ConstantEmitter::emitForInitializer(const APValue &value,
1445 void ConstantEmitter::registerCurrentAddrPrivate(llvm::Constant *signal,
1458 llvm::Constant *Base;
1462 llvm::DenseMap<llvm::Constant*, llvm::GlobalVariable*> PlaceholderAddresses;
1465 llvm::DenseMap<llvm::GlobalVariable*, llvm::Constant*> Locations;
1471 llvm::SmallVector<llvm::Constant*, 8> IndexValues;
1473 ReplacePlaceholders(CodeGenModule &CGM, llvm::Constant *base,
1474 ArrayRef<std::pair<llvm::Constant*,
1480 void replaceInInitializer(llvm::Constant *init) {
1501 // messing around with llvm::Constant structures, which never itself
1511 void findLocations(llvm::Constant *init) {
1569 llvm::Constant *location =
1610 llvm::Constant *ConstantEmitter::tryEmitPrivateForVarInit(const VarDecl &D) {
1652 llvm::Constant *
1659 llvm::Constant *
1667 llvm::Constant *ConstantEmitter::tryEmitPrivateForMemory(const Expr *E,
1670 llvm::Constant *C = tryEmitPrivate(E, nonMemoryDestType);
1674 llvm::Constant *ConstantEmitter::tryEmitPrivateForMemory(const APValue &value,
1681 llvm::Constant *ConstantEmitter::emitForMemory(CodeGenModule &CGM,
1682 llvm::Constant *C,
1695 llvm::Constant *elts[] = {
1712 llvm::Constant *ConstantEmitter::tryEmitPrivate(const Expr *E,
1723 llvm::Constant *C;
1732 llvm::Constant *CodeGenModule::getNullPointer(llvm::PointerType *T, QualType QT) {
1740 llvm::Constant *Value;
1743 /*implicit*/ ConstantLValue(llvm::Constant *value,
1767 llvm::Constant *tryEmit();
1770 llvm::Constant *tryEmitAbsolute(llvm::Type *destTy);
1793 llvm::Constant *getOffset() {
1799 llvm::Constant *applyOffset(llvm::Constant *C) {
1815 llvm::Constant *ConstantLValueEmitter::tryEmit() {
1838 llvm::Constant *value = result.Value;
1856 llvm::Constant *
1869 llvm::Constant *C;
1909 llvm::Constant *TypeInfo =
1922 if (llvm::Constant *Result = Emitter.tryEmitConstantExpr(E))
1970 llvm::Constant *Ptr = Emitter.CGF->GetAddrOfLabel(E->getLabel());
2024 llvm::Constant *ConstantEmitter::tryEmitPrivate(const APValue &Value,
2039 llvm::Constant *Complex[2];
2062 llvm::Constant *Complex[2];
2076 SmallVector<llvm::Constant *, 4> Inits(NumElts);
2092 llvm::Constant *LHS = tryEmitPrivate(LHSExpr, LHSExpr->getType());
2093 llvm::Constant *RHS = tryEmitPrivate(RHSExpr, RHSExpr->getType());
2100 llvm::Constant *AddrLabelDiff = llvm::ConstantExpr::getSub(LHS, RHS);
2117 llvm::Constant *Filler = nullptr;
2126 SmallVector<llvm::Constant*, 16> Elts;
2134 llvm::Constant *C = tryEmitPrivateForMemory(
2184 llvm::Constant *
2200 static llvm::Constant *EmitNullConstantForBase(CodeGenModule &CGM,
2204 static llvm::Constant *EmitNullConstant(CodeGenModule &CGM,
2213 std::vector<llvm::Constant *> elements(numElements);
2282 elements[i] = llvm::Constant::getNullValue(structure->getElementType(i));
2289 static llvm::Constant *EmitNullConstantForBase(CodeGenModule &CGM,
2296 return llvm::Constant::getNullValue(baseType);
2302 llvm::Constant *ConstantEmitter::emitNullForMemory(CodeGenModule &CGM,
2307 llvm::Constant *CodeGenModule::EmitNullConstant(QualType T) {
2313 return llvm::Constant::getNullValue(getTypes().ConvertTypeForMem(T));
2321 llvm::Constant *Element =
2324 SmallVector<llvm::Constant *, 8> Array(NumElements, Element);
2337 llvm::Constant *