@@ -17160,6 +17160,167 @@ ir.cpp:
17160
17160
# 2190| getExpr(): [ConstructorCall] call to ClassWithDestructor
17161
17161
# 2190| Type = [VoidType] void
17162
17162
# 2190| ValueCategory = prvalue
17163
+ # 2194| [FunctionTemplateInstantiation,TopLevelFunction] ClassWithDestructor& vacuous_destructor_call::get<ClassWithDestructor>(ClassWithDestructor&)
17164
+ # 2194| <params>:
17165
+ # 2194| getParameter(0): [Parameter] t
17166
+ # 2194| Type = [LValueReferenceType] ClassWithDestructor &
17167
+ # 2194| getEntryPoint(): [BlockStmt] { ... }
17168
+ # 2194| getStmt(0): [ReturnStmt] return ...
17169
+ # 2194| getExpr(): [VariableAccess] t
17170
+ # 2194| Type = [LValueReferenceType] ClassWithDestructor &
17171
+ # 2194| ValueCategory = prvalue(load)
17172
+ # 2194| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to)
17173
+ # 2194| Type = [LValueReferenceType] ClassWithDestructor &
17174
+ # 2194| ValueCategory = prvalue
17175
+ # 2194| getExpr(): [ReferenceDereferenceExpr] (reference dereference)
17176
+ # 2194| Type = [Class] ClassWithDestructor
17177
+ # 2194| ValueCategory = lvalue
17178
+ # 2194| [TemplateFunction,TopLevelFunction] T& vacuous_destructor_call::get<T>(T&)
17179
+ # 2194| <params>:
17180
+ # 2194| getParameter(0): [Parameter] t
17181
+ # 2194| Type = [LValueReferenceType] T &
17182
+ # 2194| getEntryPoint(): [BlockStmt] { ... }
17183
+ # 2194| getStmt(0): [ReturnStmt] return ...
17184
+ # 2194| getExpr(): [VariableAccess] t
17185
+ # 2194| Type = [LValueReferenceType] T &
17186
+ # 2194| ValueCategory = prvalue(load)
17187
+ # 2194| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference)
17188
+ # 2194| Type = [TemplateParameter] T
17189
+ # 2194| ValueCategory = lvalue
17190
+ # 2194| [FunctionTemplateInstantiation,TopLevelFunction] int& vacuous_destructor_call::get<int>(int&)
17191
+ # 2194| <params>:
17192
+ # 2194| getParameter(0): [Parameter] t
17193
+ # 2194| Type = [LValueReferenceType] int &
17194
+ # 2194| getEntryPoint(): [BlockStmt] { ... }
17195
+ # 2194| getStmt(0): [ReturnStmt] return ...
17196
+ # 2194| getExpr(): [VariableAccess] t
17197
+ # 2194| Type = [LValueReferenceType] int &
17198
+ # 2194| ValueCategory = prvalue(load)
17199
+ # 2194| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to)
17200
+ # 2194| Type = [LValueReferenceType] int &
17201
+ # 2194| ValueCategory = prvalue
17202
+ # 2194| getExpr(): [ReferenceDereferenceExpr] (reference dereference)
17203
+ # 2194| Type = [IntType] int
17204
+ # 2194| ValueCategory = lvalue
17205
+ # 2197| [FunctionTemplateInstantiation,TopLevelFunction] void vacuous_destructor_call::call_destructor<ClassWithDestructor>(ClassWithDestructor&)
17206
+ # 2197| <params>:
17207
+ # 2197| getParameter(0): [Parameter] t
17208
+ # 2197| Type = [LValueReferenceType] ClassWithDestructor &
17209
+ # 2197| getEntryPoint(): [BlockStmt] { ... }
17210
+ # 2198| getStmt(0): [ExprStmt] ExprStmt
17211
+ # 2198| getExpr(): [DestructorCall] call to ~ClassWithDestructor
17212
+ # 2198| Type = [VoidType] void
17213
+ # 2198| ValueCategory = prvalue
17214
+ # 2198| getQualifier(): [FunctionCall] call to get
17215
+ # 2198| Type = [LValueReferenceType] ClassWithDestructor &
17216
+ # 2198| ValueCategory = prvalue
17217
+ # 2198| getArgument(0): [VariableAccess] t
17218
+ # 2198| Type = [LValueReferenceType] ClassWithDestructor &
17219
+ # 2198| ValueCategory = prvalue(load)
17220
+ # 2198| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to)
17221
+ # 2198| Type = [LValueReferenceType] ClassWithDestructor &
17222
+ # 2198| ValueCategory = prvalue
17223
+ # 2198| getExpr(): [ReferenceDereferenceExpr] (reference dereference)
17224
+ # 2198| Type = [Class] ClassWithDestructor
17225
+ # 2198| ValueCategory = lvalue
17226
+ # 2198| getQualifier().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference)
17227
+ # 2198| Type = [Class] ClassWithDestructor
17228
+ # 2198| ValueCategory = lvalue
17229
+ # 2199| getStmt(1): [ReturnStmt] return ...
17230
+ # 2197| [TemplateFunction,TopLevelFunction] void vacuous_destructor_call::call_destructor<T>(T&)
17231
+ # 2197| <params>:
17232
+ # 2197| getParameter(0): [Parameter] t
17233
+ # 2197| Type = [LValueReferenceType] T &
17234
+ # 2197| getEntryPoint(): [BlockStmt] { ... }
17235
+ # 2198| getStmt(0): [ExprStmt] ExprStmt
17236
+ # 2198| getExpr(): [ExprCall] call to expression
17237
+ # 2198| Type = [UnknownType] unknown
17238
+ # 2198| ValueCategory = prvalue
17239
+ # 2198| getExpr(): [Literal] Unknown literal
17240
+ # 2198| Type = [UnknownType] unknown
17241
+ # 2198| ValueCategory = prvalue
17242
+ # 2198| getChild(-1): [ExprCall] call to expression
17243
+ # 2198| Type = [UnknownType] unknown
17244
+ # 2198| ValueCategory = prvalue
17245
+ # 2198| getExpr(): [Literal] Unknown literal
17246
+ # 2198| Type = [UnknownType] unknown
17247
+ # 2198| ValueCategory = prvalue
17248
+ # 2198| getArgument(0): [VariableAccess] t
17249
+ # 2198| Type = [LValueReferenceType] T &
17250
+ # 2198| ValueCategory = prvalue(load)
17251
+ # 2198| getArgument(0).getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference)
17252
+ # 2198| Type = [TemplateParameter] T
17253
+ # 2198| ValueCategory = lvalue
17254
+ # 2199| getStmt(1): [ReturnStmt] return ...
17255
+ # 2197| [FunctionTemplateInstantiation,TopLevelFunction] void vacuous_destructor_call::call_destructor<int>(int&)
17256
+ # 2197| <params>:
17257
+ # 2197| getParameter(0): [Parameter] t
17258
+ # 2197| Type = [LValueReferenceType] int &
17259
+ # 2197| getEntryPoint(): [BlockStmt] { ... }
17260
+ # 2198| getStmt(0): [ExprStmt] ExprStmt
17261
+ # 2198| getExpr(): [VacuousDestructorCall] (vacuous destructor call)
17262
+ # 2198| Type = [VoidType] void
17263
+ # 2198| ValueCategory = prvalue
17264
+ # 2198| getChild(0): [FunctionCall] call to get
17265
+ # 2198| Type = [LValueReferenceType] int &
17266
+ # 2198| ValueCategory = prvalue
17267
+ # 2198| getArgument(0): [VariableAccess] t
17268
+ # 2198| Type = [LValueReferenceType] int &
17269
+ # 2198| ValueCategory = prvalue(load)
17270
+ # 2198| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to)
17271
+ # 2198| Type = [LValueReferenceType] int &
17272
+ # 2198| ValueCategory = prvalue
17273
+ # 2198| getExpr(): [ReferenceDereferenceExpr] (reference dereference)
17274
+ # 2198| Type = [IntType] int
17275
+ # 2198| ValueCategory = lvalue
17276
+ # 2198| getChild(0).getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference)
17277
+ # 2198| Type = [IntType] int
17278
+ # 2198| ValueCategory = lvalue
17279
+ # 2199| getStmt(1): [ReturnStmt] return ...
17280
+ # 2201| [TopLevelFunction] void vacuous_destructor_call::non_vacuous_destructor_call()
17281
+ # 2201| <params>:
17282
+ # 2201| getEntryPoint(): [BlockStmt] { ... }
17283
+ # 2202| getStmt(0): [DeclStmt] declaration
17284
+ # 2202| getDeclarationEntry(0): [VariableDeclarationEntry] definition of c
17285
+ # 2202| Type = [Class] ClassWithDestructor
17286
+ # 2202| getVariable().getInitializer(): [Initializer] initializer for c
17287
+ # 2202| getExpr(): [ConstructorCall] call to ClassWithDestructor
17288
+ # 2202| Type = [VoidType] void
17289
+ # 2202| ValueCategory = prvalue
17290
+ # 2203| getStmt(1): [ExprStmt] ExprStmt
17291
+ # 2203| getExpr(): [FunctionCall] call to call_destructor
17292
+ # 2203| Type = [VoidType] void
17293
+ # 2203| ValueCategory = prvalue
17294
+ # 2203| getArgument(0): [VariableAccess] c
17295
+ # 2203| Type = [Class] ClassWithDestructor
17296
+ # 2203| ValueCategory = lvalue
17297
+ # 2203| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to)
17298
+ # 2203| Type = [LValueReferenceType] ClassWithDestructor &
17299
+ # 2203| ValueCategory = prvalue
17300
+ # 2204| getStmt(2): [ReturnStmt] return ...
17301
+ # 2204| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor
17302
+ # 2204| Type = [VoidType] void
17303
+ # 2204| ValueCategory = prvalue
17304
+ # 2204| getQualifier(): [VariableAccess] c
17305
+ # 2204| Type = [Class] ClassWithDestructor
17306
+ # 2204| ValueCategory = lvalue
17307
+ # 2206| [TopLevelFunction] void vacuous_destructor_call::vacuous_destructor_call()
17308
+ # 2206| <params>:
17309
+ # 2206| getEntryPoint(): [BlockStmt] { ... }
17310
+ # 2207| getStmt(0): [DeclStmt] declaration
17311
+ # 2207| getDeclarationEntry(0): [VariableDeclarationEntry] definition of i
17312
+ # 2207| Type = [IntType] int
17313
+ # 2208| getStmt(1): [ExprStmt] ExprStmt
17314
+ # 2208| getExpr(): [FunctionCall] call to call_destructor
17315
+ # 2208| Type = [VoidType] void
17316
+ # 2208| ValueCategory = prvalue
17317
+ # 2208| getArgument(0): [VariableAccess] i
17318
+ # 2208| Type = [IntType] int
17319
+ # 2208| ValueCategory = lvalue
17320
+ # 2208| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to)
17321
+ # 2208| Type = [LValueReferenceType] int &
17322
+ # 2208| ValueCategory = prvalue
17323
+ # 2209| getStmt(2): [ReturnStmt] return ...
17163
17324
perf-regression.cpp:
17164
17325
# 4| [CopyAssignmentOperator] Big& Big::operator=(Big const&)
17165
17326
# 4| <params>:
0 commit comments