A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://clang.llvm.org/doxygen/ConstructionContext_8cpp_source.html below:

clang: lib/Analysis/ConstructionContext.cpp Source File

19using namespace clang

;

41

llvm_unreachable(

"The above loop can only be terminated via return!"

);

45

ConstructionContext::createMaterializedTemporaryFromLayers(

72

assert(ElidedItem.

getKind

() ==

74

ElidedCE = cast<CXXConstructExpr>(ElidedItem.

getStmt

());

84 return

create<SimpleTemporaryObjectConstructionContext>(

C

, BTE, MTE);

86 return

create<ElidedTemporaryObjectConstructionContext>(

87 C

, BTE, MTE, ElidedCE, ElidedCC);

92 return

create<SimpleTemporaryObjectConstructionContext>(

C

, BTE, MTE);

103 return

create<SimpleTemporaryObjectConstructionContext>(

C

, BTE,

108 switch

(ParentItem.

getKind

()) {

110 const auto

*DS = cast<DeclStmt>(ParentItem.

getStmt

());

111

assert(!cast<VarDecl>(DS->getSingleDecl())->getType().getCanonicalType()

112

->getAsCXXRecordDecl()->hasTrivialDestructor());

113 return

create<CXX17ElidedCopyVariableConstructionContext>(

C

, DS, BTE);

116

llvm_unreachable(

"This context does not accept a bound temporary!"

);

119

assert(ParentLayer->

isLast

());

120 const auto

*RS = cast<ReturnStmt>(ParentItem.

getStmt

());

121

assert(!RS->getRetValue()->getType().getCanonicalType()

122

->getAsCXXRecordDecl()->hasTrivialDestructor());

123 return

create<CXX17ElidedCopyReturnedValueConstructionContext>(

C

, RS,

129 const auto

*MTE = cast<MaterializeTemporaryExpr>(ParentItem.

getStmt

());

130 return

createMaterializedTemporaryFromLayers(

C

, MTE, BTE,

134

llvm_unreachable(

"Duplicate CXXBindTemporaryExpr in the AST!"

);

137

llvm_unreachable(

"Elided destructor items are not produced by the CFG!"

);

140

llvm_unreachable(

"Materialization is necessary to put temporary into a " 141 "copy or move constructor!"

);

144

assert(ParentLayer->

isLast

());

145 const auto

*

E

= cast<Expr>(ParentItem.

getStmt

());

146

assert(isa<CallExpr>(

E

) || isa<CXXConstructExpr>(

E

) ||

147

isa<ObjCMessageExpr>(

E

));

148 return

create<ArgumentConstructionContext>(

C

,

E

, ParentItem.

getIndex

(),

152

assert(ParentLayer->

isLast

());

154

assert(!I->getAnyMember()->getType().getCanonicalType()

155

->getAsCXXRecordDecl()->hasTrivialDestructor());

156 return

create<CXX17ElidedCopyConstructorInitializerConstructionContext>(

160

assert(ParentLayer->

isLast

());

161 const auto

*

E

= cast<LambdaExpr>(ParentItem.

getStmt

());

162 return

create<LambdaCaptureConstructionContext>(

C

,

E

,

167

llvm_unreachable(

"Unexpected construction context with destructor!"

);

178

assert(TopLayer->

isLast

());

179 const auto

*DS = cast<DeclStmt>(TopItem.

getStmt

());

180 return

create<SimpleVariableConstructionContext>(

C

, DS);

183

assert(TopLayer->

isLast

());

184 const auto

*NE = cast<CXXNewExpr>(TopItem.

getStmt

());

185 return

create<NewAllocatedObjectConstructionContext>(

C

, NE);

188

assert(TopLayer->

isLast

());

189 const auto

*RS = cast<ReturnStmt>(TopItem.

getStmt

());

190 return

create<SimpleReturnedValueConstructionContext>(

C

, RS);

193 const auto

*MTE = cast<MaterializeTemporaryExpr>(TopItem.

getStmt

());

194 return

createMaterializedTemporaryFromLayers(

C

, MTE,

nullptr

,

198 const auto

*BTE = cast<CXXBindTemporaryExpr>(TopItem.

getStmt

());

201 return

createBoundTemporaryFromLayers(

C

, BTE, TopLayer->

getParent

());

204

llvm_unreachable(

"Elided destructor items are not produced by the CFG!"

);

207

llvm_unreachable(

"The argument needs to be materialized first!"

);

210

assert(TopLayer->

isLast

());

211 const auto

*

E

= cast<LambdaExpr>(TopItem.

getStmt

());

212 return

create<LambdaCaptureConstructionContext>(

C

,

E

, TopItem.

getIndex

());

215

assert(TopLayer->

isLast

());

217 return

create<SimpleConstructorInitializerConstructionContext>(

C

, I);

220

assert(TopLayer->

isLast

());

221 const auto

*

E

= cast<Expr>(TopItem.

getStmt

());

222 return

create<ArgumentConstructionContext>(

C

,

E

, TopItem.

getIndex

(),

226

llvm_unreachable(

"Unexpected construction context!"

);

Represents binding an expression to a temporary.

Represents a call to a C++ constructor.

bool isElidable() const

Whether this construction is elidable.

Represents a C++ base or member initializer.

bool hasTrivialDestructor() const

Determine whether this class has a trivial destructor (C++ [class.dtor]p3)

bool hasNonTrivialDestructor() const

Determine whether this class has a non-trivial destructor (C++ [class.dtor]p3)

Represents a single point (AST node) in the program that requires attention during construction of an...

unsigned getIndex() const

If a single trigger statement triggers multiple constructors, they are usually being enumerated.

const CXXCtorInitializer * getCXXCtorInitializer() const

The construction site is not necessarily a statement.

@ TemporaryDestructorKind

@ ElidableConstructorKind

const Stmt * getStmt() const

The construction site - the statement that triggered the construction for one of its parts.

Construction context can be seen as a linked list of multiple layers.

static const ConstructionContextLayer * create(BumpVectorContext &C, const ConstructionContextItem &Item, const ConstructionContextLayer *Parent=nullptr)

const ConstructionContextItem & getItem() const

const ConstructionContextLayer * getParent() const

bool isStrictlyMoreSpecificThan(const ConstructionContextLayer *Other) const

See if Other is a proper initial segment of this construction context in terms of the parent chain - ...

ConstructionContext's subclasses describe different ways of constructing an object in C++.

static const ConstructionContext * createFromLayers(BumpVectorContext &C, const ConstructionContextLayer *TopLayer)

Consume the construction context layer, together with its parent layers, and wrap it up into a comple...

Represents a prvalue temporary that is written into memory so that a reference can bind to it.

StorageDuration getStorageDuration() const

Retrieve the storage duration for the materialized temporary.

QualType getCanonicalType() const

CXXRecordDecl * getAsCXXRecordDecl() const

Retrieves the CXXRecordDecl that this type refers to, either because the type is a RecordType or beca...

The JSON file list parser is used to communicate input to InstallAPI.

@ Self

'self' clause, allowed on Compute and Combined Constructs, plus 'update'.

@ SD_FullExpression

Full-expression storage duration (for temporaries).

@ Other

Other implicit parameter.


RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4