|
clang 24.0.0git
|
An aggregate value slot. More...
#include "/work/as-worker-4/publish-doxygen-docs/llvm-project/clang/lib/CIR/CodeGen/CIRGenValue.h"
Public Types | |
| enum | IsDestructed_t { IsNotDestructed , IsDestructed } |
| This is set to true if the slot might be aliased and it's not undefined behavior to access it through such an alias. More... | |
| enum | IsZeroed_t { IsNotZeroed , IsZeroed } |
| enum | IsAliased_t { IsNotAliased , IsAliased } |
| enum | Overlap_t { DoesNotOverlap , MayOverlap } |
Public Member Functions | |
| AggValueSlot (Address addr, clang::Qualifiers quals, bool destructedFlag, bool zeroedFlag, bool aliasedFlag, bool overlapFlag) | |
| IsDestructed_t | isExternallyDestructed () const |
| void | setExternallyDestructed (bool destructed=true) |
| clang::Qualifiers | getQualifiers () const |
| bool | isVolatile () const |
| void | setVolatile (bool flag) |
| Address | getAddress () const |
| bool | isIgnored () const |
| mlir::Value | getPointer () const |
| Overlap_t | mayOverlap () const |
| IsZeroed_t | isZeroed () const |
| IsAliased_t | isPotentiallyAliased () const |
| RValue | asRValue () const |
Static Public Member Functions | |
| static AggValueSlot | ignored () |
| Returns an aggregate value slot indicating that the aggregate value is being ignored. | |
| static AggValueSlot | forAddr (Address addr, clang::Qualifiers quals, IsDestructed_t isDestructed, IsAliased_t isAliased, Overlap_t mayOverlap, IsZeroed_t isZeroed=IsNotZeroed) |
| static AggValueSlot | forLValue (const LValue &LV, IsDestructed_t isDestructed, IsAliased_t isAliased, Overlap_t mayOverlap, IsZeroed_t isZeroed=IsNotZeroed) |
An aggregate value slot.
Definition at line 377 of file CIRGenValue.h.
| Enumerator | |
|---|---|
| IsNotAliased | |
| IsAliased | |
Definition at line 418 of file CIRGenValue.h.
This is set to true if the slot might be aliased and it's not undefined behavior to access it through such an alias.
Note that it's always undefined behavior to access a C++ object that's under construction through an alias derived from outside the construction process.
This flag controls whether calls that produce the aggregate value may be evaluated directly into the slot, or whether they must be evaluated into an unaliased temporary and then memcpy'ed over. Since it's invalid in general to memcpy a non-POD C++ object, it's important that this flag never be set when evaluating an expression which constructs such an object. This is set to true if the tail padding of this slot might overlap another object that may have already been initialized (and whose value must be preserved by this initialization). If so, we may only store up to the dsize of the type. Otherwise we can widen stores to the size of the type.
| Enumerator | |
|---|---|
| IsNotDestructed | |
| IsDestructed | |
Definition at line 416 of file CIRGenValue.h.
| Enumerator | |
|---|---|
| IsNotZeroed | |
| IsZeroed | |
Definition at line 417 of file CIRGenValue.h.
| Enumerator | |
|---|---|
| DoesNotOverlap | |
| MayOverlap | |
Definition at line 419 of file CIRGenValue.h.
|
inline |
Definition at line 428 of file CIRGenValue.h.
Referenced by forAddr(), forLValue(), and ignored().
|
inline |
Definition at line 479 of file CIRGenValue.h.
References cir::MissingFeatures::aggValueSlot(), getAddress(), clang::CIRGen::RValue::getAggregate(), clang::CIRGen::RValue::getIgnored(), and isIgnored().
Referenced by clang::CIRGen::CIRGenFunction::emitAnyExpr(), and clang::CIRGen::CIRGenFunction::emitCallArg().
|
inlinestatic |
Definition at line 434 of file CIRGenValue.h.
References AggValueSlot(), IsNotZeroed, isZeroed(), and mayOverlap().
Referenced by clang::CIRGen::CIRGenFunction::createAggTemp(), clang::CIRGen::CIRGenFunction::emitAnyExprToMem(), clang::CIRGen::CIRGenFunction::emitBaseInitializer(), clang::CIRGen::CIRGenFunction::emitCXXAggrConstructorCall(), clang::CIRGen::CIRGenFunction::emitDelegatingCXXConstructorCall(), clang::CIRGen::CIRGenFunction::emitNewArrayInitializer(), clang::CIRGen::CIRGenFunction::emitReturnStmt(), forLValue(), getOrCreateCopyThunk(), ignored(), and storeAnyExprIntoOneUnit().
|
inlinestatic |
Definition at line 442 of file CIRGenValue.h.
References AggValueSlot(), forAddr(), clang::CIRGen::LValue::getAddress(), clang::CIRGen::LValue::getQuals(), IsNotZeroed, isZeroed(), and mayOverlap().
Referenced by clang::CIRGen::CIRGenFunction::emitAggExprToLValue(), clang::CIRGen::CIRGenFunction::emitAtomicInit(), emitDeclInit(), clang::CIRGen::CIRGenFunction::emitExprAsInit(), and clang::CIRGen::CIRGenFunction::emitInitializerForField().
|
inline |
Definition at line 467 of file CIRGenValue.h.
Referenced by asRValue(), clang::CIRGen::CIRGenFunction::emitCXXBindTemporaryLValue(), clang::CIRGen::CIRGenFunction::emitCXXConstructExpr(), clang::CIRGen::CIRGenFunction::emitCXXConstructLValue(), and clang::CIRGen::CIRGenFunction::emitCXXConstructorCall().
|
inline |
Definition at line 471 of file CIRGenValue.h.
|
inline |
Definition at line 456 of file CIRGenValue.h.
|
inlinestatic |
Returns an aggregate value slot indicating that the aggregate value is being ignored.
Definition at line 423 of file CIRGenValue.h.
References AggValueSlot(), DoesNotOverlap, forAddr(), clang::CIRGen::Address::invalid(), IsNotAliased, and IsNotDestructed.
Referenced by clang::CIRGen::CIRGenFunction::emitAnyExprToTemp(), clang::CIRGen::CIRGenFunction::emitIgnoredExpr(), and clang::CIRGen::CIRGenFunction::emitPseudoObjectLValue().
|
inline |
Definition at line 449 of file CIRGenValue.h.
Referenced by emitSuspendExpression().
|
inline |
Definition at line 469 of file CIRGenValue.h.
Referenced by asRValue(), clang::CIRGen::CIRGenFunction::emitAnyExpr(), clang::CIRGen::CIRGenFunction::emitCXXConstructExpr(), and emitSuspendExpression().
|
inline |
Definition at line 477 of file CIRGenValue.h.
|
inline |
Definition at line 458 of file CIRGenValue.h.
|
inline |
Definition at line 475 of file CIRGenValue.h.
Referenced by clang::CIRGen::CIRGenFunction::emitCXXConstructExpr(), forAddr(), and forLValue().
|
inline |
Definition at line 473 of file CIRGenValue.h.
Referenced by clang::CIRGen::CIRGenFunction::emitCXXConstructorCall(), forAddr(), and forLValue().
Definition at line 452 of file CIRGenValue.h.
Referenced by clang::CIRGen::CIRGenFunction::emitCallArg(), clang::CIRGen::CIRGenFunction::emitCXXBindTemporaryLValue(), and emitSuspendExpression().
|
inline |
Definition at line 460 of file CIRGenValue.h.