Merge pull request #15937 from jketema/destructors14

C++: Handle destructors of temporaries with extended lifetimes
This commit is contained in:
Jeroen Ketema
2024-03-19 12:07:05 +01:00
committed by GitHub

View File

@@ -1883,6 +1883,12 @@ destructors_for_temps.cpp:
# 30| Type = [Class] ClassWithDestructor2
# 30| ValueCategory = lvalue
# 31| getStmt(1): [ReturnStmt] return ...
# 31| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor2
# 31| Type = [VoidType] void
# 31| ValueCategory = prvalue
# 31| getQualifier(): [ReuseExpr] reuse of temporary object
# 31| Type = [Class] ClassWithDestructor2
# 31| ValueCategory = xvalue
# 33| [TopLevelFunction] void temp_test4()
# 33| <params>:
# 33| getEntryPoint(): [BlockStmt] { ... }
@@ -1914,6 +1920,12 @@ destructors_for_temps.cpp:
# 36| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor2
# 36| Type = [VoidType] void
# 36| ValueCategory = prvalue
# 36| getQualifier(): [ReuseExpr] reuse of temporary object
# 36| Type = [Class] ClassWithDestructor2
# 36| ValueCategory = xvalue
# 36| getImplicitDestructorCall(1): [DestructorCall] call to ~ClassWithDestructor2
# 36| Type = [VoidType] void
# 36| ValueCategory = prvalue
# 36| getQualifier(): [VariableAccess] c
# 36| Type = [Class] ClassWithDestructor2
# 36| ValueCategory = lvalue
@@ -11743,6 +11755,12 @@ ir.cpp:
# 1426| getImplicitDestructorCall(0): [DestructorCall] call to ~String
# 1426| Type = [VoidType] void
# 1426| ValueCategory = prvalue
# 1426| getQualifier(): [ReuseExpr] reuse of temporary object
# 1426| Type = [Struct] String
# 1426| ValueCategory = xvalue
# 1426| getImplicitDestructorCall(1): [DestructorCall] call to ~String
# 1426| Type = [VoidType] void
# 1426| ValueCategory = prvalue
# 1426| getQualifier(): [VariableAccess] s
# 1426| Type = [Struct] String
# 1426| ValueCategory = lvalue
@@ -11838,6 +11856,12 @@ ir.cpp:
# 1438| getImplicitDestructorCall(1): [DestructorCall] call to ~destructor_only
# 1438| Type = [VoidType] void
# 1438| ValueCategory = prvalue
# 1438| getQualifier(): [ReuseExpr] reuse of temporary object
# 1438| Type = [Class] destructor_only
# 1438| ValueCategory = xvalue
# 1438| getImplicitDestructorCall(2): [DestructorCall] call to ~destructor_only
# 1438| Type = [VoidType] void
# 1438| ValueCategory = prvalue
# 1438| getQualifier(): [VariableAccess] d
# 1438| Type = [Class] destructor_only
# 1438| ValueCategory = lvalue