Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit d4e2d37

Browse files
committed
C++: Add a simple test that fails.
1 parent cf996f8 commit d4e2d37

10 files changed

Lines changed: 183 additions & 8 deletions

cpp/ql/test/library-tests/ir/ir/PrintAST.expected

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2186,6 +2186,41 @@ destructors_for_temps.cpp:
21862186
# 55| Type = [Class] ClassWithDestructor2
21872187
# 55| ValueCategory = prvalue
21882188
# 56| getStmt(1): [ReturnStmt] return ...
2189+
# 58| [TopLevelFunction] void temp_test8_simple(bool)
2190+
# 58| <params>:
2191+
# 58| getParameter(0): [Parameter] b
2192+
# 58| Type = [BoolType] bool
2193+
# 58| getEntryPoint(): [BlockStmt] { ... }
2194+
# 59| getStmt(0): [ExprStmt] ExprStmt
2195+
# 59| getExpr(): [ConditionalExpr] ... ? ... : ...
2196+
# 59| Type = [PlainCharType] char
2197+
# 59| ValueCategory = prvalue
2198+
# 59| getCondition(): [VariableAccess] b
2199+
# 59| Type = [BoolType] bool
2200+
# 59| ValueCategory = prvalue(load)
2201+
# 59| getThen(): [ThrowExpr] throw ...
2202+
# 59| Type = [PlainCharType] char
2203+
# 59| ValueCategory = prvalue
2204+
# 59| getExpr(): [FunctionCall] call to get_x
2205+
# 59| Type = [PlainCharType] char
2206+
# 59| ValueCategory = prvalue
2207+
# 59| getQualifier(): [ConstructorCall] call to ClassWithDestructor2
2208+
# 59| Type = [VoidType] void
2209+
# 59| ValueCategory = prvalue
2210+
# 59| getQualifier().getFullyConverted(): [TemporaryObjectExpr] temporary object
2211+
# 59| Type = [Class] ClassWithDestructor2
2212+
# 59| ValueCategory = prvalue(load)
2213+
# 59| getElse(): [CharLiteral] 97
2214+
# 59| Type = [PlainCharType] char
2215+
# 59| Value = [CharLiteral] 97
2216+
# 59| ValueCategory = prvalue
2217+
# 59| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor2
2218+
# 59| Type = [VoidType] void
2219+
# 59| ValueCategory = prvalue
2220+
# 59| getQualifier(): [ReuseExpr] reuse of temporary object
2221+
# 59| Type = [Class] ClassWithDestructor2
2222+
# 59| ValueCategory = xvalue
2223+
# 60| getStmt(1): [ReturnStmt] return ...
21892224
ir.c:
21902225
# 5| [TopLevelFunction] int getX(MyCoords*)
21912226
# 5| <params>:

cpp/ql/test/library-tests/ir/ir/aliased_ir.expected

Lines changed: 51 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1252,12 +1252,12 @@ destructors_for_temps.cpp:
12521252
# 51| v51_85(void) = ^IndirectReadSideEffect[-1] : &:r51_58, &:r51_80, m51_44, m51_47, m51_66, m51_69
12531253
# 51| m51_86(ClassWithDestructor2) = ^IndirectMayWriteSideEffect[-1] : &:r51_58, &:r51_80
12541254
# 51| m51_87(ClassWithDestructor2) = Chi : total:m51_44, total:m51_47, total:m51_66, total:m51_69, partial:m51_64, partial:m51_86
1255-
#-----| Goto (back edge) -> Block 3
12561255
#-----| Goto (back edge) -> Block 4
1256+
#-----| Goto (back edge) -> Block 3
12571257

12581258
# 51| Block 8
1259-
#-----| Goto (back edge) -> Block 3
12601259
#-----| Goto (back edge) -> Block 4
1260+
#-----| Goto (back edge) -> Block 3
12611261

12621262
# 54| void temp_test8(bool)
12631263
# 54| Block 0
@@ -1358,12 +1358,59 @@ destructors_for_temps.cpp:
13581358
# 55| v55_85(void) = ^IndirectReadSideEffect[-1] : &:r55_58, &:r55_80, m55_45, m55_48, m55_67, m55_70
13591359
# 55| m55_86(ClassWithDestructor2) = ^IndirectMayWriteSideEffect[-1] : &:r55_58, &:r55_80
13601360
# 55| m55_87(ClassWithDestructor2) = Chi : total:m55_45, total:m55_48, total:m55_67, total:m55_70, partial:m55_64, partial:m55_86
1361-
#-----| Goto (back edge) -> Block 3
13621361
#-----| Goto (back edge) -> Block 4
1362+
#-----| Goto (back edge) -> Block 3
13631363

13641364
# 55| Block 8
1365-
#-----| Goto (back edge) -> Block 3
13661365
#-----| Goto (back edge) -> Block 4
1366+
#-----| Goto (back edge) -> Block 3
1367+
1368+
# 58| void temp_test8_simple(bool)
1369+
# 58| Block 0
1370+
# 58| v58_1(void) = EnterFunction :
1371+
# 58| m58_2(unknown) = AliasedDefinition :
1372+
# 58| m58_3(unknown) = InitializeNonLocal :
1373+
# 58| m58_4(unknown) = Chi : total:m58_2, partial:m58_3
1374+
# 58| r58_5(glval<bool>) = VariableAddress[b] :
1375+
# 58| m58_6(bool) = InitializeParameter[b] : &:r58_5
1376+
# 59| r59_1(glval<bool>) = VariableAddress[b] :
1377+
# 59| r59_2(bool) = Load[b] : &:r59_1, m58_6
1378+
# 59| v59_3(void) = ConditionalBranch : r59_2
1379+
#-----| False -> Block 3
1380+
#-----| True -> Block 2
1381+
1382+
# 58| Block 1
1383+
# 58| v58_7(void) = Unwind :
1384+
# 58| v58_8(void) = AliasedUse : ~m59_16
1385+
# 58| v58_9(void) = ExitFunction :
1386+
1387+
# 59| Block 2
1388+
# 59| r59_4(glval<char>) = VariableAddress[#throw59:9] :
1389+
# 59| r59_5(glval<ClassWithDestructor2>) = VariableAddress[#temp59:15] :
1390+
# 59| m59_6(ClassWithDestructor2) = Uninitialized[#temp59:15] : &:r59_5
1391+
# 59| r59_7(glval<unknown>) = FunctionAddress[ClassWithDestructor2] :
1392+
# 59| v59_8(void) = Call[ClassWithDestructor2] : func:r59_7, this:r59_5
1393+
# 59| m59_9(unknown) = ^CallSideEffect : ~m58_4
1394+
# 59| m59_10(unknown) = Chi : total:m58_4, partial:m59_9
1395+
# 59| m59_11(ClassWithDestructor2) = ^IndirectMayWriteSideEffect[-1] : &:r59_5
1396+
# 59| m59_12(ClassWithDestructor2) = Chi : total:m59_6, partial:m59_11
1397+
# 59| r59_13(glval<unknown>) = FunctionAddress[get_x] :
1398+
# 59| r59_14(char) = Call[get_x] : func:r59_13, this:r59_5
1399+
# 59| m59_15(unknown) = ^CallSideEffect : ~m59_10
1400+
# 59| m59_16(unknown) = Chi : total:m59_10, partial:m59_15
1401+
# 59| v59_17(void) = ^IndirectReadSideEffect[-1] : &:r59_5, m59_12
1402+
# 59| m59_18(ClassWithDestructor2) = ^IndirectMayWriteSideEffect[-1] : &:r59_5
1403+
# 59| m59_19(ClassWithDestructor2) = Chi : total:m59_12, partial:m59_18
1404+
# 59| m59_20(char) = Store[#throw59:9] : &:r59_4, r59_14
1405+
# 59| v59_21(void) = ThrowValue : &:r59_4, m59_20
1406+
#-----| Exception -> Block 1
1407+
1408+
# 59| Block 3
1409+
# 59| r59_22(char) = Constant[97] :
1410+
# 59| r59_23(glval<char>) = VariableAddress[#temp59:5] :
1411+
# 59| m59_24(char) = Store[#temp59:5] : &:r59_23, r59_22
1412+
# 59| r59_25(glval<char>) = VariableAddress[#temp59:5] :
1413+
# 59| r59_26(char) = Load[#temp59:5] : &:r59_25, m59_24
13671414

13681415
ir.c:
13691416
# 7| void MyCoordsTest(int)

cpp/ql/test/library-tests/ir/ir/aliased_ssa_consistency.expected

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ missingOperandType
66
duplicateChiOperand
77
sideEffectWithoutPrimary
88
instructionWithoutSuccessor
9+
| destructors_for_temps.cpp:59:5:59:50 | Load: ... ? ... : ... | Instruction 'Load: ... ? ... : ...' has no successors in function '$@'. | destructors_for_temps.cpp:58:6:58:22 | void temp_test8_simple(bool) | void temp_test8_simple(bool) |
910
ambiguousSuccessors
1011
| destructors_for_temps.cpp:51:75:51:96 | Chi: reuse of temporary object | Instruction 'Chi: reuse of temporary object' has 2 successors of kind 'Goto' in function '$@'. | destructors_for_temps.cpp:49:6:49:15 | void temp_test7(bool) | void temp_test7(bool) |
1112
| destructors_for_temps.cpp:55:75:55:96 | Chi: reuse of temporary object | Instruction 'Chi: reuse of temporary object' has 2 successors of kind 'Goto' in function '$@'. | destructors_for_temps.cpp:54:6:54:15 | void temp_test8(bool) | void temp_test8(bool) |

cpp/ql/test/library-tests/ir/ir/aliased_ssa_consistency_unsound.expected

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ missingOperandType
1111
duplicateChiOperand
1212
sideEffectWithoutPrimary
1313
instructionWithoutSuccessor
14+
| destructors_for_temps.cpp:59:5:59:50 | Load: ... ? ... : ... | Instruction 'Load: ... ? ... : ...' has no successors in function '$@'. | destructors_for_temps.cpp:58:6:58:22 | void temp_test8_simple(bool) | void temp_test8_simple(bool) |
1415
ambiguousSuccessors
1516
| destructors_for_temps.cpp:51:75:51:96 | Chi: reuse of temporary object | Instruction 'Chi: reuse of temporary object' has 2 successors of kind 'Goto' in function '$@'. | destructors_for_temps.cpp:49:6:49:15 | void temp_test7(bool) | void temp_test7(bool) |
1617
| destructors_for_temps.cpp:55:75:55:96 | Chi: reuse of temporary object | Instruction 'Chi: reuse of temporary object' has 2 successors of kind 'Goto' in function '$@'. | destructors_for_temps.cpp:54:6:54:15 | void temp_test8(bool) | void temp_test8(bool) |

cpp/ql/test/library-tests/ir/ir/destructors_for_temps.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,3 +54,7 @@ void temp_test7(bool b) {
5454
void temp_test8(bool b) {
5555
b ? throw ClassWithConstructor('x', ClassWithDestructor2().get_x()) : ClassWithDestructor2();
5656
}
57+
58+
void temp_test8_simple(bool b) {
59+
b ? throw ClassWithDestructor2().get_x() : 'a';
60+
}

cpp/ql/test/library-tests/ir/ir/operand_locations.expected

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1299,6 +1299,40 @@
12991299
| destructors_for_temps.cpp:55:75:55:96 | SideEffect | ~m55_76 |
13001300
| destructors_for_temps.cpp:55:75:55:96 | StoreValue | r55_40 |
13011301
| destructors_for_temps.cpp:55:75:55:96 | Unary | r55_32 |
1302+
| destructors_for_temps.cpp:58:6:58:22 | ChiPartial | partial:m58_3 |
1303+
| destructors_for_temps.cpp:58:6:58:22 | ChiTotal | total:m58_2 |
1304+
| destructors_for_temps.cpp:58:6:58:22 | SideEffect | ~m59_16 |
1305+
| destructors_for_temps.cpp:58:29:58:29 | Address | &:r58_5 |
1306+
| destructors_for_temps.cpp:59:5:59:5 | Address | &:r59_1 |
1307+
| destructors_for_temps.cpp:59:5:59:5 | Condition | r59_2 |
1308+
| destructors_for_temps.cpp:59:5:59:5 | Load | m58_6 |
1309+
| destructors_for_temps.cpp:59:5:59:50 | Address | &:r59_23 |
1310+
| destructors_for_temps.cpp:59:5:59:50 | Address | &:r59_25 |
1311+
| destructors_for_temps.cpp:59:5:59:50 | Load | m59_24 |
1312+
| destructors_for_temps.cpp:59:9:59:44 | Address | &:r59_4 |
1313+
| destructors_for_temps.cpp:59:9:59:44 | Address | &:r59_4 |
1314+
| destructors_for_temps.cpp:59:9:59:44 | Load | m59_20 |
1315+
| destructors_for_temps.cpp:59:15:59:36 | Address | &:r59_5 |
1316+
| destructors_for_temps.cpp:59:15:59:36 | Address | &:r59_5 |
1317+
| destructors_for_temps.cpp:59:15:59:36 | Address | &:r59_5 |
1318+
| destructors_for_temps.cpp:59:15:59:36 | Address | &:r59_5 |
1319+
| destructors_for_temps.cpp:59:15:59:36 | Arg(this) | this:r59_5 |
1320+
| destructors_for_temps.cpp:59:15:59:36 | Arg(this) | this:r59_5 |
1321+
| destructors_for_temps.cpp:59:15:59:36 | CallTarget | func:r59_7 |
1322+
| destructors_for_temps.cpp:59:15:59:36 | ChiPartial | partial:m59_9 |
1323+
| destructors_for_temps.cpp:59:15:59:36 | ChiPartial | partial:m59_11 |
1324+
| destructors_for_temps.cpp:59:15:59:36 | ChiPartial | partial:m59_18 |
1325+
| destructors_for_temps.cpp:59:15:59:36 | ChiTotal | total:m58_4 |
1326+
| destructors_for_temps.cpp:59:15:59:36 | ChiTotal | total:m59_6 |
1327+
| destructors_for_temps.cpp:59:15:59:36 | ChiTotal | total:m59_12 |
1328+
| destructors_for_temps.cpp:59:15:59:36 | SideEffect | m59_12 |
1329+
| destructors_for_temps.cpp:59:15:59:36 | SideEffect | ~m58_4 |
1330+
| destructors_for_temps.cpp:59:38:59:42 | CallTarget | func:r59_13 |
1331+
| destructors_for_temps.cpp:59:38:59:42 | ChiPartial | partial:m59_15 |
1332+
| destructors_for_temps.cpp:59:38:59:42 | ChiTotal | total:m59_10 |
1333+
| destructors_for_temps.cpp:59:38:59:42 | SideEffect | ~m59_10 |
1334+
| destructors_for_temps.cpp:59:38:59:42 | StoreValue | r59_14 |
1335+
| destructors_for_temps.cpp:59:48:59:50 | StoreValue | r59_22 |
13021336
| file://:0:0:0:0 | Address | &:r0_1 |
13031337
| file://:0:0:0:0 | Address | &:r0_1 |
13041338
| file://:0:0:0:0 | Address | &:r0_1 |

cpp/ql/test/library-tests/ir/ir/raw_consistency.expected

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ missingOperandType
66
duplicateChiOperand
77
sideEffectWithoutPrimary
88
instructionWithoutSuccessor
9+
| destructors_for_temps.cpp:59:5:59:50 | Load: ... ? ... : ... | Instruction 'Load: ... ? ... : ...' has no successors in function '$@'. | destructors_for_temps.cpp:58:6:58:22 | void temp_test8_simple(bool) | void temp_test8_simple(bool) |
910
ambiguousSuccessors
1011
| destructors_for_temps.cpp:51:75:51:96 | IndirectMayWriteSideEffect: reuse of temporary object | Instruction 'IndirectMayWriteSideEffect: reuse of temporary object' has 2 successors of kind 'Goto' in function '$@'. | destructors_for_temps.cpp:49:6:49:15 | void temp_test7(bool) | void temp_test7(bool) |
1112
| destructors_for_temps.cpp:55:75:55:96 | IndirectMayWriteSideEffect: reuse of temporary object | Instruction 'IndirectMayWriteSideEffect: reuse of temporary object' has 2 successors of kind 'Goto' in function '$@'. | destructors_for_temps.cpp:54:6:54:15 | void temp_test8(bool) | void temp_test8(bool) |

cpp/ql/test/library-tests/ir/ir/raw_ir.expected

Lines changed: 54 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1170,12 +1170,12 @@ destructors_for_temps.cpp:
11701170
# 51| mu51_57(unknown) = ^CallSideEffect : ~m?
11711171
# 51| v51_58(void) = ^IndirectReadSideEffect[-1] : &:r51_42, &:r51_54, ~m?
11721172
# 51| mu51_59(ClassWithDestructor2) = ^IndirectMayWriteSideEffect[-1] : &:r51_42, &:r51_54
1173-
#-----| Goto (back edge) -> Block 3
11741173
#-----| Goto (back edge) -> Block 4
1174+
#-----| Goto (back edge) -> Block 3
11751175

11761176
# 51| Block 8
1177-
#-----| Goto (back edge) -> Block 3
11781177
#-----| Goto (back edge) -> Block 4
1178+
#-----| Goto (back edge) -> Block 3
11791179

11801180
# 54| void temp_test8(bool)
11811181
# 54| Block 0
@@ -1259,12 +1259,62 @@ destructors_for_temps.cpp:
12591259
# 55| mu55_57(unknown) = ^CallSideEffect : ~m?
12601260
# 55| v55_58(void) = ^IndirectReadSideEffect[-1] : &:r55_42, &:r55_54, ~m?
12611261
# 55| mu55_59(ClassWithDestructor2) = ^IndirectMayWriteSideEffect[-1] : &:r55_42, &:r55_54
1262-
#-----| Goto (back edge) -> Block 3
12631262
#-----| Goto (back edge) -> Block 4
1263+
#-----| Goto (back edge) -> Block 3
12641264

12651265
# 55| Block 8
1266-
#-----| Goto (back edge) -> Block 3
12671266
#-----| Goto (back edge) -> Block 4
1267+
#-----| Goto (back edge) -> Block 3
1268+
1269+
# 58| void temp_test8_simple(bool)
1270+
# 58| Block 0
1271+
# 58| v58_1(void) = EnterFunction :
1272+
# 58| mu58_2(unknown) = AliasedDefinition :
1273+
# 58| mu58_3(unknown) = InitializeNonLocal :
1274+
# 58| r58_4(glval<bool>) = VariableAddress[b] :
1275+
# 58| mu58_5(bool) = InitializeParameter[b] : &:r58_4
1276+
# 59| r59_1(glval<bool>) = VariableAddress[b] :
1277+
# 59| r59_2(bool) = Load[b] : &:r59_1, ~m?
1278+
# 59| v59_3(void) = ConditionalBranch : r59_2
1279+
#-----| False -> Block 4
1280+
#-----| True -> Block 3
1281+
1282+
# 58| Block 1
1283+
# 58| v58_6(void) = AliasedUse : ~m?
1284+
# 58| v58_7(void) = ExitFunction :
1285+
1286+
# 58| Block 2
1287+
# 58| v58_8(void) = Unwind :
1288+
#-----| Goto -> Block 1
1289+
1290+
# 59| Block 3
1291+
# 59| r59_4(glval<char>) = VariableAddress[#throw59:9] :
1292+
# 59| r59_5(glval<ClassWithDestructor2>) = VariableAddress[#temp59:15] :
1293+
# 59| mu59_6(ClassWithDestructor2) = Uninitialized[#temp59:15] : &:r59_5
1294+
# 59| r59_7(glval<unknown>) = FunctionAddress[ClassWithDestructor2] :
1295+
# 59| v59_8(void) = Call[ClassWithDestructor2] : func:r59_7, this:r59_5
1296+
# 59| mu59_9(unknown) = ^CallSideEffect : ~m?
1297+
# 59| mu59_10(ClassWithDestructor2) = ^IndirectMayWriteSideEffect[-1] : &:r59_5
1298+
# 59| r59_11(glval<unknown>) = FunctionAddress[get_x] :
1299+
# 59| r59_12(char) = Call[get_x] : func:r59_11, this:r59_5
1300+
# 59| mu59_13(unknown) = ^CallSideEffect : ~m?
1301+
# 59| v59_14(void) = ^IndirectReadSideEffect[-1] : &:r59_5, ~m?
1302+
# 59| mu59_15(ClassWithDestructor2) = ^IndirectMayWriteSideEffect[-1] : &:r59_5
1303+
# 59| mu59_16(char) = Store[#throw59:9] : &:r59_4, r59_12
1304+
# 59| v59_17(void) = ThrowValue : &:r59_4, ~m?
1305+
#-----| Exception -> Block 2
1306+
1307+
# 59| Block 4
1308+
# 59| r59_18(char) = Constant[97] :
1309+
# 59| r59_19(glval<char>) = VariableAddress[#temp59:5] :
1310+
# 59| mu59_20(char) = Store[#temp59:5] : &:r59_19, r59_18
1311+
# 59| r59_21(glval<char>) = VariableAddress[#temp59:5] :
1312+
# 59| r59_22(char) = Load[#temp59:5] : &:r59_21, ~m?
1313+
1314+
# 60| Block 5
1315+
# 60| v60_1(void) = NoOp :
1316+
# 58| v58_9(void) = ReturnVoid :
1317+
#-----| Goto -> Block 1
12681318

12691319
ir.c:
12701320
# 7| void MyCoordsTest(int)

cpp/ql/test/library-tests/ir/ir/unaliased_ssa_consistency.expected

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ missingOperandType
66
duplicateChiOperand
77
sideEffectWithoutPrimary
88
instructionWithoutSuccessor
9+
| destructors_for_temps.cpp:59:5:59:50 | Load: ... ? ... : ... | Instruction 'Load: ... ? ... : ...' has no successors in function '$@'. | destructors_for_temps.cpp:58:6:58:22 | void temp_test8_simple(bool) | void temp_test8_simple(bool) |
910
ambiguousSuccessors
1011
| destructors_for_temps.cpp:51:75:51:96 | IndirectMayWriteSideEffect: reuse of temporary object | Instruction 'IndirectMayWriteSideEffect: reuse of temporary object' has 2 successors of kind 'Goto' in function '$@'. | destructors_for_temps.cpp:49:6:49:15 | void temp_test7(bool) | void temp_test7(bool) |
1112
| destructors_for_temps.cpp:55:75:55:96 | IndirectMayWriteSideEffect: reuse of temporary object | Instruction 'IndirectMayWriteSideEffect: reuse of temporary object' has 2 successors of kind 'Goto' in function '$@'. | destructors_for_temps.cpp:54:6:54:15 | void temp_test8(bool) | void temp_test8(bool) |

cpp/ql/test/library-tests/ir/ir/unaliased_ssa_consistency_unsound.expected

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ missingOperandType
66
duplicateChiOperand
77
sideEffectWithoutPrimary
88
instructionWithoutSuccessor
9+
| destructors_for_temps.cpp:59:5:59:50 | Load: ... ? ... : ... | Instruction 'Load: ... ? ... : ...' has no successors in function '$@'. | destructors_for_temps.cpp:58:6:58:22 | void temp_test8_simple(bool) | void temp_test8_simple(bool) |
910
ambiguousSuccessors
1011
| destructors_for_temps.cpp:51:75:51:96 | IndirectMayWriteSideEffect: reuse of temporary object | Instruction 'IndirectMayWriteSideEffect: reuse of temporary object' has 2 successors of kind 'Goto' in function '$@'. | destructors_for_temps.cpp:49:6:49:15 | void temp_test7(bool) | void temp_test7(bool) |
1112
| destructors_for_temps.cpp:55:75:55:96 | IndirectMayWriteSideEffect: reuse of temporary object | Instruction 'IndirectMayWriteSideEffect: reuse of temporary object' has 2 successors of kind 'Goto' in function '$@'. | destructors_for_temps.cpp:54:6:54:15 | void temp_test8(bool) | void temp_test8(bool) |

0 commit comments

Comments
 (0)