|
clang 22.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 { MayOverlap , DoesNotOverlap } |
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 302 of file CIRGenValue.h.
| Enumerator | |
|---|---|
| IsNotAliased | |
| IsAliased | |
Definition at line 343 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 341 of file CIRGenValue.h.
| Enumerator | |
|---|---|
| IsNotZeroed | |
| IsZeroed | |
Definition at line 342 of file CIRGenValue.h.
| Enumerator | |
|---|---|
| MayOverlap | |
| DoesNotOverlap | |
Definition at line 344 of file CIRGenValue.h.
|
inline |
Definition at line 353 of file CIRGenValue.h.
Referenced by forAddr(), forLValue(), and ignored().
|
inline |
Definition at line 404 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().
|
inlinestatic |
Definition at line 359 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::emitReturnStmt(), forLValue(), ignored(), and storeAnyExprIntoOneUnit().
|
inlinestatic |
Definition at line 367 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 392 of file CIRGenValue.h.
Referenced by asRValue(), clang::CIRGen::CIRGenFunction::emitCXXConstructExpr(), and clang::CIRGen::CIRGenFunction::emitCXXConstructorCall().
|
inline |
Definition at line 396 of file CIRGenValue.h.
|
inline |
Definition at line 381 of file CIRGenValue.h.
|
inlinestatic |
Returns an aggregate value slot indicating that the aggregate value is being ignored.
Definition at line 348 of file CIRGenValue.h.
References AggValueSlot(), DoesNotOverlap, forAddr(), clang::CIRGen::Address::invalid(), IsNotAliased, and IsNotDestructed.
Referenced by clang::CIRGen::CIRGenFunction::emitAlloca(), clang::CIRGen::CIRGenFunction::emitAnyExprToTemp(), and clang::CIRGen::CIRGenFunction::emitIgnoredExpr().
|
inline |
Definition at line 374 of file CIRGenValue.h.
|
inline |
Definition at line 394 of file CIRGenValue.h.
Referenced by asRValue(), clang::CIRGen::CIRGenFunction::emitAnyExpr(), and clang::CIRGen::CIRGenFunction::emitCXXConstructExpr().
|
inline |
Definition at line 402 of file CIRGenValue.h.
|
inline |
Definition at line 383 of file CIRGenValue.h.
|
inline |
Definition at line 400 of file CIRGenValue.h.
Referenced by clang::CIRGen::CIRGenFunction::emitCXXConstructExpr(), forAddr(), and forLValue().
|
inline |
Definition at line 398 of file CIRGenValue.h.
Referenced by forAddr(), and forLValue().
Definition at line 377 of file CIRGenValue.h.
|
inline |
Definition at line 385 of file CIRGenValue.h.