clang 8.0.0

Public Types | Public Member Functions | Static Public Member Functions | List of all members
clang::CodeGen::AggValueSlot Class Reference

An aggregate value slot. More...

`#include "/work/www-prereleases/8.0.0/rc2/builddocs/llvm.src/tools/clang/lib/CodeGen/CGValue.h"`

## Public Types
enum | IsAliased_t { IsNotAliased, IsAliased }
enum | IsDestructed_t { IsNotDestructed, IsDestructed }
enum | IsZeroed_t { IsNotZeroed, IsZeroed }
enum | Overlap_t { DoesNotOverlap, MayOverlap }
enum | NeedsGCBarriers_t { DoesNotNeedGCBarriers, NeedsGCBarriers }
enum | IsSanitizerChecked_t { IsNotSanitizerChecked, IsSanitizerChecked }

## Public Member Functions
IsDestructed_t | isExternallyDestructed () const
void | setExternallyDestructed (bool destructed=true)
Qualifiers | getQualifiers () const
bool | isVolatile () const
void | setVolatile (bool flag)
Qualifiers::ObjCLifetime | getObjCLifetime () const
NeedsGCBarriers_t | requiresGCollection () const
llvm::Value * | getPointer () const
Address | getAddress () const
bool | isIgnored () const
CharUnits | getAlignment () const
IsAliased_t | isPotentiallyAliased () const
Overlap_t | mayOverlap () const
bool | isSanitizerChecked () const
RValue | asRValue () const
void | setZeroed (bool V=true)
IsZeroed_t | isZeroed () const
CharUnits | getPreferredSize (ASTContext &Ctx, QualType Type) const
| Get the preferred size to use when storing a value to this slot. More...

## Static Public Member Functions
static AggValueSlot | ignored ()
| ignored - Returns an aggregate value slot indicating that the aggregate value is being ignored. More...
static AggValueSlot | forAddr (Address addr, Qualifiers quals, IsDestructed_t isDestructed, NeedsGCBarriers_t needsGC, IsAliased_t isAliased, Overlap_t mayOverlap, IsZeroed_t isZeroed=IsNotZeroed, IsSanitizerChecked_t isChecked=IsNotSanitizerChecked)
| forAddr - Make a slot for an aggregate value. More...
static AggValueSlot | forLValue (const LValue &LV, IsDestructed_t isDestructed, NeedsGCBarriers_t needsGC, IsAliased_t isAliased, Overlap_t mayOverlap, IsZeroed_t isZeroed=IsNotZeroed, IsSanitizerChecked_t isChecked=IsNotSanitizerChecked)

## Detailed Description

An aggregate value slot.

Definition at line 437 of file CGValue.h.

## Member Enumeration Documentation

## ◆ IsAliased_t

enum clang::CodeGen::AggValueSlot::IsAliased_t

Enumerator
IsNotAliased |
IsAliased |

Definition at line 490 of file CGValue.h.

## ◆ IsDestructed_t

enum clang::CodeGen::AggValueSlot::IsDestructed_t

Enumerator
IsNotDestructed |
IsDestructed |

Definition at line 491 of file CGValue.h.

## ◆ IsSanitizerChecked_t

enum clang::CodeGen::AggValueSlot::IsSanitizerChecked_t

Enumerator
IsNotSanitizerChecked |
IsSanitizerChecked |

Definition at line 495 of file CGValue.h.

## ◆ IsZeroed_t

enum clang::CodeGen::AggValueSlot::IsZeroed_t

Enumerator
IsNotZeroed |
IsZeroed |

Definition at line 492 of file CGValue.h.

## ◆ NeedsGCBarriers_t

enum clang::CodeGen::AggValueSlot::NeedsGCBarriers_t

Enumerator
DoesNotNeedGCBarriers |
NeedsGCBarriers |

Definition at line 494 of file CGValue.h.

## ◆ Overlap_t

enum clang::CodeGen::AggValueSlot::Overlap_t

Enumerator
DoesNotOverlap |
MayOverlap |

Definition at line 493 of file CGValue.h.

## Member Function Documentation

## ◆ asRValue()

RValue clang::CodeGen::AggValueSlot::asRValue | ( |  | ) | const
| inline

Definition at line 607 of file CGValue.h.

Referenced by clang::CodeGen::CodeGenFunction::EmitAnyExpr(), clang::CodeGen::CodeGenFunction::EmitCallArg(), emitPseudoObjectExpr(), and isBlockVarRef().

## ◆ forAddr()

static AggValueSlot clang::CodeGen::AggValueSlot::forAddr | ( | Address | addr,
|  | Qualifiers | quals,
|  | IsDestructed_t | isDestructed,
|  | NeedsGCBarriers_t | needsGC,
|  | IsAliased_t | isAliased,
|  | Overlap_t | mayOverlap,
|  | IsZeroed_t | isZeroed = `IsNotZeroed`,
|  | IsSanitizerChecked_t | isChecked = `IsNotSanitizerChecked`
| ) |  |
| inline static

forAddr - Make a slot for an aggregate value.

Parameters

  quals | - The qualifiers that dictate how the slot should be initialied. Only 'volatile' and the Objective-C lifetime qualifiers matter.
  isDestructed | - true if something else is responsible for calling destructors on this object
  needsGC | - true if the slot is potentially located somewhere that ObjC GC calls should be emitted for

Definition at line 514 of file CGValue.h.

References clang::CodeGen::Address::getAlignment(), clang::CodeGen::Address::getPointer(), clang::CharUnits::getQuantity(), and clang::CodeGen::Address::isValid().

Referenced by createPlaceholderSlot(), clang::CodeGen::CodeGenFunction::EmitAnyExprToMem(), EmitBaseInitializer(), clang::CodeGen::CodeGenFunction::EmitDelegatingCXXConstructorCall(), clang::CodeGen::CodeGenFunction::EmitMaterializeTemporaryExpr(), findPeephole(), clang::CodeGen::CodeGenFunction::GenerateObjCAtomicGetterCopyHelperFunction(), InitCatchParam(), isSimpleZero(), and StoreAnyExprIntoOneUnit().

## ◆ forLValue()

static AggValueSlot clang::CodeGen::AggValueSlot::forLValue | ( | const LValue & | LV,
|  | IsDestructed_t | isDestructed,
|  | NeedsGCBarriers_t | needsGC,
|  | IsAliased_t | isAliased,
|  | Overlap_t | mayOverlap,
|  | IsZeroed_t | isZeroed = `IsNotZeroed`,
|  | IsSanitizerChecked_t | isChecked = `IsNotSanitizerChecked`
| ) |  |
| inline static

Definition at line 540 of file CGValue.h.

References clang::CodeGen::LValue::getAddress(), and clang::CodeGen::LValue::getQuals().

Referenced by clang::CodeGen::CodeGenFunction::EmitAggExprToLValue(), clang::CodeGen::CodeGenFunction::EmitAtomicInit(), EmitDeclInit(), clang::CodeGen::CodeGenFunction::EmitExprAsInit(), clang::CodeGen::CodeGenFunction::EmitInitializerForField(), clang::CodeGen::CodeGenFunction::GenerateObjCCtorDtorMethod(), isBlockVarRef(), and isSimpleZero().

## ◆ getAddress()

Address clang::CodeGen::AggValueSlot::getAddress | ( |  | ) | const
| inline

Definition at line 583 of file CGValue.h.

Referenced by CheckAggExprForMemSetUse(), clang::CodeGen::CodeGenFunction::EmitAggExpr(), clang::CodeGen::CodeGenFunction::EmitAtomicLoad(), clang::CodeGen::CodeGenFunction::EmitCallArg(), clang::CodeGen::CodeGenFunction::EmitCXXBindTemporaryLValue(), clang::CodeGen::CodeGenFunction::EmitCXXConstructExpr(), clang::CodeGen::CodeGenFunction::EmitLambdaExpr(), clang::CodeGen::CodeGenFunction::EmitLambdaLValue(), emitPseudoObjectExpr(), findPeephole(), isBlockVarRef(), and isSimpleZero().

## ◆ getAlignment()

CharUnits clang::CodeGen::AggValueSlot::getAlignment | ( |  | ) | const
| inline

Definition at line 591 of file CGValue.h.

## ◆ getObjCLifetime()

Qualifiers::ObjCLifetime clang::CodeGen::AggValueSlot::getObjCLifetime | ( |  | ) | const
| inline

Definition at line 571 of file CGValue.h.

References clang::Qualifiers::getObjCLifetime().

## ◆ getPointer()

llvm::Value* clang::CodeGen::AggValueSlot::getPointer | ( |  | ) | const
| inline

Definition at line 579 of file CGValue.h.

## ◆ getPreferredSize()

CharUnits clang::CodeGen::AggValueSlot::getPreferredSize | ( | ASTContext & | Ctx,
|  | QualType | Type
| ) |  | const
| inline

Get the preferred size to use when storing a value to this slot.

This is the type size unless that might overlap another object, in which case it's the dsize.

Definition at line 623 of file CGValue.h.

References clang::ASTContext::getTypeInfoDataSizeInChars(), and clang::ASTContext::getTypeSizeInChars().

Referenced by CheckAggExprForMemSetUse().

## ◆ getQualifiers()

Qualifiers clang::CodeGen::AggValueSlot::getQualifiers | ( |  | ) | const
| inline

Definition at line 558 of file CGValue.h.

Referenced by findPeephole().

## ◆ ignored()

static AggValueSlot clang::CodeGen::AggValueSlot::ignored | ( |  | ) |
| inline static

ignored - Returns an aggregate value slot indicating that the aggregate value is being ignored.

Definition at line 499 of file CGValue.h.

Referenced by clang::CodeGen::CodeGenFunction::EmitAnyExprToTemp(), clang::CodeGen::CodeGenFunction::EmitAtomicLoad(), EmitAtomicUpdateValue(), clang::CodeGen::CodeGenFunction::EmitCoawaitLValue(), clang::CodeGen::CodeGenFunction::EmitCoyieldLValue(), clang::CodeGen::CodeGenFunction::EmitIgnoredExpr(), clang::CodeGen::CodeGenFunction::EmitPseudoObjectLValue(), emitSimdlenSafelenClause(), and findPeephole().

## ◆ isExternallyDestructed()

IsDestructed_t clang::CodeGen::AggValueSlot::isExternallyDestructed | ( |  | ) | const
| inline

Definition at line 551 of file CGValue.h.

Referenced by findPeephole(), and isBlockVarRef().

## ◆ isIgnored()

bool clang::CodeGen::AggValueSlot::isIgnored | ( |  | ) | const
| inline

Definition at line 587 of file CGValue.h.

Referenced by clang::CodeGen::CodeGenFunction::EmitAggExpr(), clang::CodeGen::CodeGenFunction::EmitAnyExpr(), clang::CodeGen::CodeGenFunction::EmitAtomicLoad(), clang::CodeGen::CodeGenFunction::EmitCXXConstructExpr(), and findPeephole().

## ◆ isPotentiallyAliased()

IsAliased_t clang::CodeGen::AggValueSlot::isPotentiallyAliased | ( |  | ) | const
| inline

Definition at line 595 of file CGValue.h.

Referenced by findPeephole(), and isTrivialFiller().

## ◆ isSanitizerChecked()

bool clang::CodeGen::AggValueSlot::isSanitizerChecked | ( |  | ) | const
| inline

Definition at line 603 of file CGValue.h.

Referenced by clang::CodeGen::CodeGenFunction::EmitCXXConstructExpr().

## ◆ isVolatile()

bool clang::CodeGen::AggValueSlot::isVolatile | ( |  | ) | const
| inline

Definition at line 560 of file CGValue.h.

References clang::Qualifiers::hasVolatile().

Referenced by CheckAggExprForMemSetUse(), findPeephole(), and isBlockVarRef().

## ◆ isZeroed()

IsZeroed_t clang::CodeGen::AggValueSlot::isZeroed | ( |  | ) | const
| inline

Definition at line 616 of file CGValue.h.

Referenced by CheckAggExprForMemSetUse(), clang::CodeGen::CodeGenFunction::EmitCXXConstructExpr(), findPeephole(), isSimpleZero(), and isTrivialFiller().

## ◆ mayOverlap()

Overlap_t clang::CodeGen::AggValueSlot::mayOverlap | ( |  | ) | const
| inline

Definition at line 599 of file CGValue.h.

Referenced by clang::CodeGen::CodeGenFunction::EmitCXXConstructExpr().

## ◆ requiresGCollection()

NeedsGCBarriers_t clang::CodeGen::AggValueSlot::requiresGCollection | ( |  | ) | const
| inline

Definition at line 575 of file CGValue.h.

Referenced by findPeephole().

## ◆ setExternallyDestructed()

void clang::CodeGen::AggValueSlot::setExternallyDestructed | ( | bool | destructed = `true` | ) |
| inline

Definition at line 554 of file CGValue.h.

Referenced by clang::CodeGen::CodeGenFunction::EmitCallArg(), clang::CodeGen::CodeGenFunction::EmitCXXBindTemporaryLValue(), and isBlockVarRef().

## ◆ setVolatile()

void clang::CodeGen::AggValueSlot::setVolatile | ( | bool | flag | ) |
| inline

Definition at line 564 of file CGValue.h.

References clang::Qualifiers::addVolatile(), and clang::Qualifiers::removeVolatile().

Referenced by isBlockVarRef().

## ◆ setZeroed()

void clang::CodeGen::AggValueSlot::setZeroed | ( | bool | V = `true` | ) |
| inline

Definition at line 615 of file CGValue.h.

Referenced by CheckAggExprForMemSetUse().

The documentation for this class was generated from the following file:

- lib/CodeGen/CGValue.h