|
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 334 of file CIRGenValue.h.
| Enumerator | |
|---|---|
| IsNotAliased | |
| IsAliased | |
Definition at line 375 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 373 of file CIRGenValue.h.
| Enumerator | |
|---|---|
| IsNotZeroed | |
| IsZeroed | |
Definition at line 374 of file CIRGenValue.h.
| Enumerator | |
|---|---|
| MayOverlap | |
| DoesNotOverlap | |
Definition at line 376 of file CIRGenValue.h.
|
inline |
Definition at line 385 of file CIRGenValue.h.
Referenced by forAddr(), forLValue(), and ignored().
|
inline |
Definition at line 436 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 391 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 399 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 424 of file CIRGenValue.h.
Referenced by asRValue(), clang::CIRGen::CIRGenFunction::emitCXXConstructExpr(), and clang::CIRGen::CIRGenFunction::emitCXXConstructorCall().
|
inline |
Definition at line 428 of file CIRGenValue.h.
|
inline |
Definition at line 413 of file CIRGenValue.h.
|
inlinestatic |
Returns an aggregate value slot indicating that the aggregate value is being ignored.
Definition at line 380 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 406 of file CIRGenValue.h.
|
inline |
Definition at line 426 of file CIRGenValue.h.
Referenced by asRValue(), clang::CIRGen::CIRGenFunction::emitAnyExpr(), and clang::CIRGen::CIRGenFunction::emitCXXConstructExpr().
|
inline |
Definition at line 434 of file CIRGenValue.h.
|
inline |
Definition at line 415 of file CIRGenValue.h.
|
inline |
Definition at line 432 of file CIRGenValue.h.
Referenced by clang::CIRGen::CIRGenFunction::emitCXXConstructExpr(), forAddr(), and forLValue().
|
inline |
Definition at line 430 of file CIRGenValue.h.
Referenced by forAddr(), and forLValue().
Definition at line 409 of file CIRGenValue.h.
|
inline |
Definition at line 417 of file CIRGenValue.h.