mirror of
https://github.com/github/codeql.git
synced 2026-05-01 11:45:14 +02:00
Add IR test for array structured bindings
This commit is contained in:
@@ -11390,6 +11390,190 @@ ir.cpp:
|
||||
# 1458| Value = [Literal] 3
|
||||
# 1458| ValueCategory = prvalue
|
||||
# 1459| getStmt(1): [ReturnStmt] return ...
|
||||
# 1462| [TopLevelFunction] void array_structured_binding()
|
||||
# 1462| <params>:
|
||||
# 1462| getEntryPoint(): [BlockStmt] { ... }
|
||||
# 1463| getStmt(0): [DeclStmt] declaration
|
||||
# 1463| getDeclarationEntry(0): [VariableDeclarationEntry] definition of xs
|
||||
# 1463| Type = [ArrayType] int[2]
|
||||
# 1463| getVariable().getInitializer(): [Initializer] initializer for xs
|
||||
# 1463| getExpr(): [ArrayAggregateLiteral] {...}
|
||||
# 1463| Type = [ArrayType] int[2]
|
||||
# 1463| ValueCategory = prvalue
|
||||
# 1463| getElementExpr(0): [Literal] 1
|
||||
# 1463| Type = [IntType] int
|
||||
# 1463| Value = [Literal] 1
|
||||
# 1463| ValueCategory = prvalue
|
||||
# 1463| getElementExpr(1): [Literal] 2
|
||||
# 1463| Type = [IntType] int
|
||||
# 1463| Value = [Literal] 2
|
||||
# 1463| ValueCategory = prvalue
|
||||
# 1465| getStmt(1): [BlockStmt] { ... }
|
||||
# 1466| getStmt(0): [DeclStmt] declaration
|
||||
# 1466| getDeclarationEntry(0): (no string representation)
|
||||
# 1466| Type = [LValueReferenceType] int(&)[2]
|
||||
# 1466| getVariable().getInitializer(): [Initializer] initializer for (unnamed local variable)
|
||||
# 1466| getExpr(): [VariableAccess] xs
|
||||
# 1466| Type = [ArrayType] int[2]
|
||||
# 1466| ValueCategory = lvalue
|
||||
# 1466| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to)
|
||||
# 1466| Type = [LValueReferenceType] int(&)[2]
|
||||
# 1466| ValueCategory = prvalue
|
||||
# 1466| getDeclarationEntry(1): [VariableDeclarationEntry] definition of x0
|
||||
# 1466| Type = [IntType] int
|
||||
#-----| getVariable().getInitializer(): [Initializer] initializer for x0
|
||||
#-----| getExpr(): [ArrayExpr] access to array
|
||||
#-----| Type = [IntType] int
|
||||
#-----| ValueCategory = lvalue
|
||||
#-----| getArrayBase(): [VariableAccess] (unnamed local variable)
|
||||
#-----| Type = [LValueReferenceType] int(&)[2]
|
||||
#-----| ValueCategory = prvalue(load)
|
||||
#-----| getArrayOffset(): [Literal] 0
|
||||
#-----| Type = [LongType] unsigned long
|
||||
#-----| Value = [Literal] 0
|
||||
#-----| ValueCategory = prvalue
|
||||
#-----| getArrayBase().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion
|
||||
#-----| Type = [IntPointerType] int *
|
||||
#-----| ValueCategory = prvalue
|
||||
#-----| getExpr(): [ReferenceDereferenceExpr] (reference dereference)
|
||||
#-----| Type = [ArrayType] int[2]
|
||||
#-----| ValueCategory = lvalue
|
||||
# 1466| getDeclarationEntry(2): [VariableDeclarationEntry] definition of x1
|
||||
# 1466| Type = [IntType] int
|
||||
#-----| getVariable().getInitializer(): [Initializer] initializer for x1
|
||||
#-----| getExpr(): [ArrayExpr] access to array
|
||||
#-----| Type = [IntType] int
|
||||
#-----| ValueCategory = lvalue
|
||||
#-----| getArrayBase(): [VariableAccess] (unnamed local variable)
|
||||
#-----| Type = [LValueReferenceType] int(&)[2]
|
||||
#-----| ValueCategory = prvalue(load)
|
||||
#-----| getArrayOffset(): [Literal] 1
|
||||
#-----| Type = [LongType] unsigned long
|
||||
#-----| Value = [Literal] 1
|
||||
#-----| ValueCategory = prvalue
|
||||
#-----| getArrayBase().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion
|
||||
#-----| Type = [IntPointerType] int *
|
||||
#-----| ValueCategory = prvalue
|
||||
#-----| getExpr(): [ReferenceDereferenceExpr] (reference dereference)
|
||||
#-----| Type = [ArrayType] int[2]
|
||||
#-----| ValueCategory = lvalue
|
||||
# 1467| getStmt(1): [ExprStmt] ExprStmt
|
||||
# 1467| getExpr(): [AssignExpr] ... = ...
|
||||
# 1467| Type = [IntType] int
|
||||
# 1467| ValueCategory = lvalue
|
||||
# 1467| getLValue(): [VariableAccess] x1
|
||||
# 1467| Type = [IntType] int
|
||||
# 1467| ValueCategory = lvalue
|
||||
# 1467| getRValue(): [Literal] 3
|
||||
# 1467| Type = [IntType] int
|
||||
# 1467| Value = [Literal] 3
|
||||
# 1467| ValueCategory = prvalue
|
||||
# 1468| getStmt(2): [DeclStmt] declaration
|
||||
# 1468| getDeclarationEntry(0): [VariableDeclarationEntry] definition of rx1
|
||||
# 1468| Type = [LValueReferenceType] int &
|
||||
# 1468| getVariable().getInitializer(): [Initializer] initializer for rx1
|
||||
# 1468| getExpr(): [VariableAccess] x1
|
||||
# 1468| Type = [IntType] int
|
||||
# 1468| ValueCategory = lvalue
|
||||
# 1468| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to)
|
||||
# 1468| Type = [LValueReferenceType] int &
|
||||
# 1468| ValueCategory = prvalue
|
||||
# 1469| getStmt(3): [DeclStmt] declaration
|
||||
# 1469| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x
|
||||
# 1469| Type = [IntType] int
|
||||
# 1469| getVariable().getInitializer(): [Initializer] initializer for x
|
||||
# 1469| getExpr(): [VariableAccess] x1
|
||||
# 1469| Type = [IntType] int
|
||||
# 1469| ValueCategory = prvalue(load)
|
||||
# 1472| getStmt(2): [BlockStmt] { ... }
|
||||
# 1473| getStmt(0): [DeclStmt] declaration
|
||||
# 1473| getDeclarationEntry(0): [VariableDeclarationEntry] definition of unnamed_local_variable
|
||||
# 1473| Type = [LValueReferenceType] int(&)[2]
|
||||
# 1473| getVariable().getInitializer(): [Initializer] initializer for unnamed_local_variable
|
||||
# 1473| getExpr(): [VariableAccess] xs
|
||||
# 1473| Type = [ArrayType] int[2]
|
||||
# 1473| ValueCategory = lvalue
|
||||
# 1473| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to)
|
||||
# 1473| Type = [LValueReferenceType] int(&)[2]
|
||||
# 1473| ValueCategory = prvalue
|
||||
# 1474| getStmt(1): [DeclStmt] declaration
|
||||
# 1474| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x0
|
||||
# 1474| Type = [LValueReferenceType] int &
|
||||
# 1474| getVariable().getInitializer(): [Initializer] initializer for x0
|
||||
# 1474| getExpr(): [ArrayExpr] access to array
|
||||
# 1474| Type = [IntType] int
|
||||
# 1474| ValueCategory = lvalue
|
||||
# 1474| getArrayBase(): [VariableAccess] xs
|
||||
# 1474| Type = [ArrayType] int[2]
|
||||
# 1474| ValueCategory = lvalue
|
||||
# 1474| getArrayOffset(): [Literal] 0
|
||||
# 1474| Type = [IntType] int
|
||||
# 1474| Value = [Literal] 0
|
||||
# 1474| ValueCategory = prvalue
|
||||
# 1474| getArrayBase().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion
|
||||
# 1474| Type = [IntPointerType] int *
|
||||
# 1474| ValueCategory = prvalue
|
||||
# 1474| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to)
|
||||
# 1474| Type = [LValueReferenceType] int &
|
||||
# 1474| ValueCategory = prvalue
|
||||
# 1475| getStmt(2): [DeclStmt] declaration
|
||||
# 1475| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x1
|
||||
# 1475| Type = [LValueReferenceType] int &
|
||||
# 1475| getVariable().getInitializer(): [Initializer] initializer for x1
|
||||
# 1475| getExpr(): [ArrayExpr] access to array
|
||||
# 1475| Type = [IntType] int
|
||||
# 1475| ValueCategory = lvalue
|
||||
# 1475| getArrayBase(): [VariableAccess] xs
|
||||
# 1475| Type = [ArrayType] int[2]
|
||||
# 1475| ValueCategory = lvalue
|
||||
# 1475| getArrayOffset(): [Literal] 1
|
||||
# 1475| Type = [IntType] int
|
||||
# 1475| Value = [Literal] 1
|
||||
# 1475| ValueCategory = prvalue
|
||||
# 1475| getArrayBase().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion
|
||||
# 1475| Type = [IntPointerType] int *
|
||||
# 1475| ValueCategory = prvalue
|
||||
# 1475| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to)
|
||||
# 1475| Type = [LValueReferenceType] int &
|
||||
# 1475| ValueCategory = prvalue
|
||||
# 1476| getStmt(3): [ExprStmt] ExprStmt
|
||||
# 1476| getExpr(): [AssignExpr] ... = ...
|
||||
# 1476| Type = [IntType] int
|
||||
# 1476| ValueCategory = lvalue
|
||||
# 1476| getLValue(): [VariableAccess] x1
|
||||
# 1476| Type = [LValueReferenceType] int &
|
||||
# 1476| ValueCategory = prvalue(load)
|
||||
# 1476| getRValue(): [Literal] 3
|
||||
# 1476| Type = [IntType] int
|
||||
# 1476| Value = [Literal] 3
|
||||
# 1476| ValueCategory = prvalue
|
||||
# 1476| getLValue().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference)
|
||||
# 1476| Type = [IntType] int
|
||||
# 1476| ValueCategory = lvalue
|
||||
# 1477| getStmt(4): [DeclStmt] declaration
|
||||
# 1477| getDeclarationEntry(0): [VariableDeclarationEntry] definition of rx1
|
||||
# 1477| Type = [LValueReferenceType] int &
|
||||
# 1477| getVariable().getInitializer(): [Initializer] initializer for rx1
|
||||
# 1477| getExpr(): [VariableAccess] x1
|
||||
# 1477| Type = [LValueReferenceType] int &
|
||||
# 1477| ValueCategory = prvalue(load)
|
||||
# 1477| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to)
|
||||
# 1477| Type = [LValueReferenceType] int &
|
||||
# 1477| ValueCategory = prvalue
|
||||
# 1477| getExpr(): [ReferenceDereferenceExpr] (reference dereference)
|
||||
# 1477| Type = [IntType] int
|
||||
# 1477| ValueCategory = lvalue
|
||||
# 1478| getStmt(5): [DeclStmt] declaration
|
||||
# 1478| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x
|
||||
# 1478| Type = [IntType] int
|
||||
# 1478| getVariable().getInitializer(): [Initializer] initializer for x
|
||||
# 1478| getExpr(): [VariableAccess] x1
|
||||
# 1478| Type = [LValueReferenceType] int &
|
||||
# 1478| ValueCategory = prvalue(load)
|
||||
# 1478| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference)
|
||||
# 1478| Type = [IntType] int
|
||||
# 1478| ValueCategory = prvalue(load)
|
||||
# 1480| getStmt(3): [ReturnStmt] return ...
|
||||
perf-regression.cpp:
|
||||
# 4| [CopyAssignmentOperator] Big& Big::operator=(Big const&)
|
||||
# 4| <params>:
|
||||
|
||||
@@ -1458,4 +1458,25 @@ struct Inheritance_Test_A : public Inheritance_Test_B {
|
||||
y = 3;
|
||||
}
|
||||
};
|
||||
|
||||
void array_structured_binding() {
|
||||
int xs[2] = {1, 2};
|
||||
// structured binding use
|
||||
{
|
||||
auto& [x0, x1] = xs;
|
||||
x1 = 3;
|
||||
int &rx1 = x1;
|
||||
int x = x1;
|
||||
}
|
||||
// explicit reference version
|
||||
{
|
||||
auto& unnamed_local_variable = xs;
|
||||
auto& x0 = xs[0];
|
||||
auto& x1 = xs[1];
|
||||
x1 = 3;
|
||||
int &rx1 = x1;
|
||||
int x = x1;
|
||||
}
|
||||
}
|
||||
|
||||
// semmle-extractor-options: -std=c++17 --clang
|
||||
|
||||
@@ -632,6 +632,7 @@
|
||||
| file://:0:0:0:0 | Address | &:r0_1 |
|
||||
| file://:0:0:0:0 | Address | &:r0_1 |
|
||||
| file://:0:0:0:0 | Address | &:r0_1 |
|
||||
| file://:0:0:0:0 | Address | &:r0_1 |
|
||||
| file://:0:0:0:0 | Address | &:r0_2 |
|
||||
| file://:0:0:0:0 | Address | &:r0_3 |
|
||||
| file://:0:0:0:0 | Address | &:r0_3 |
|
||||
@@ -653,6 +654,7 @@
|
||||
| file://:0:0:0:0 | Address | &:r0_8 |
|
||||
| file://:0:0:0:0 | Address | &:r0_8 |
|
||||
| file://:0:0:0:0 | Address | &:r0_8 |
|
||||
| file://:0:0:0:0 | Address | &:r0_8 |
|
||||
| file://:0:0:0:0 | Address | &:r0_9 |
|
||||
| file://:0:0:0:0 | Address | &:r0_9 |
|
||||
| file://:0:0:0:0 | Address | &:r0_10 |
|
||||
@@ -682,6 +684,8 @@
|
||||
| file://:0:0:0:0 | ChiTotal | total:m763_8 |
|
||||
| file://:0:0:0:0 | ChiTotal | total:m1043_10 |
|
||||
| file://:0:0:0:0 | ChiTotal | total:m1240_4 |
|
||||
| file://:0:0:0:0 | Left | r0_4 |
|
||||
| file://:0:0:0:0 | Left | r0_11 |
|
||||
| file://:0:0:0:0 | Load | m0_2 |
|
||||
| file://:0:0:0:0 | Load | m0_2 |
|
||||
| file://:0:0:0:0 | Load | m0_2 |
|
||||
@@ -689,7 +693,11 @@
|
||||
| file://:0:0:0:0 | Load | m745_6 |
|
||||
| file://:0:0:0:0 | Load | m754_6 |
|
||||
| file://:0:0:0:0 | Load | m763_6 |
|
||||
| file://:0:0:0:0 | Load | m1466_4 |
|
||||
| file://:0:0:0:0 | Load | m1466_4 |
|
||||
| file://:0:0:0:0 | Load | ~m1444_6 |
|
||||
| file://:0:0:0:0 | Right | r0_5 |
|
||||
| file://:0:0:0:0 | Right | r0_12 |
|
||||
| file://:0:0:0:0 | SideEffect | m0_4 |
|
||||
| file://:0:0:0:0 | SideEffect | m0_4 |
|
||||
| file://:0:0:0:0 | SideEffect | m0_4 |
|
||||
@@ -716,10 +724,14 @@
|
||||
| file://:0:0:0:0 | StoreValue | r0_1 |
|
||||
| file://:0:0:0:0 | StoreValue | r0_1 |
|
||||
| file://:0:0:0:0 | StoreValue | r0_3 |
|
||||
| file://:0:0:0:0 | StoreValue | r0_6 |
|
||||
| file://:0:0:0:0 | StoreValue | r0_13 |
|
||||
| file://:0:0:0:0 | StoreValue | r0_13 |
|
||||
| file://:0:0:0:0 | StoreValue | r0_22 |
|
||||
| file://:0:0:0:0 | StoreValue | r0_22 |
|
||||
| file://:0:0:0:0 | Unary | r0_1 |
|
||||
| file://:0:0:0:0 | Unary | r0_2 |
|
||||
| file://:0:0:0:0 | Unary | r0_3 |
|
||||
| file://:0:0:0:0 | Unary | r0_5 |
|
||||
| file://:0:0:0:0 | Unary | r0_5 |
|
||||
| file://:0:0:0:0 | Unary | r0_6 |
|
||||
@@ -730,6 +742,8 @@
|
||||
| file://:0:0:0:0 | Unary | r0_7 |
|
||||
| file://:0:0:0:0 | Unary | r0_8 |
|
||||
| file://:0:0:0:0 | Unary | r0_9 |
|
||||
| file://:0:0:0:0 | Unary | r0_9 |
|
||||
| file://:0:0:0:0 | Unary | r0_10 |
|
||||
| file://:0:0:0:0 | Unary | r0_10 |
|
||||
| file://:0:0:0:0 | Unary | r0_11 |
|
||||
| file://:0:0:0:0 | Unary | r0_12 |
|
||||
@@ -6656,6 +6670,70 @@
|
||||
| ir.cpp:1458:5:1458:9 | ChiPartial | partial:m1458_5 |
|
||||
| ir.cpp:1458:5:1458:9 | ChiTotal | total:m1457_12 |
|
||||
| ir.cpp:1458:9:1458:9 | StoreValue | r1458_1 |
|
||||
| ir.cpp:1462:6:1462:29 | ChiPartial | partial:m1462_3 |
|
||||
| ir.cpp:1462:6:1462:29 | ChiTotal | total:m1462_2 |
|
||||
| ir.cpp:1462:6:1462:29 | SideEffect | m1462_3 |
|
||||
| ir.cpp:1463:9:1463:10 | Address | &:r1463_1 |
|
||||
| ir.cpp:1463:9:1463:10 | Left | r1463_1 |
|
||||
| ir.cpp:1463:9:1463:10 | Left | r1463_1 |
|
||||
| ir.cpp:1463:16:1463:22 | Address | &:r1463_4 |
|
||||
| ir.cpp:1463:16:1463:22 | Address | &:r1463_9 |
|
||||
| ir.cpp:1463:16:1463:22 | Right | r1463_3 |
|
||||
| ir.cpp:1463:16:1463:22 | Right | r1463_8 |
|
||||
| ir.cpp:1463:18:1463:18 | ChiPartial | partial:m1463_6 |
|
||||
| ir.cpp:1463:18:1463:18 | ChiTotal | total:m1463_2 |
|
||||
| ir.cpp:1463:18:1463:18 | StoreValue | r1463_5 |
|
||||
| ir.cpp:1463:21:1463:21 | ChiPartial | partial:m1463_11 |
|
||||
| ir.cpp:1463:21:1463:21 | ChiTotal | total:m1463_7 |
|
||||
| ir.cpp:1463:21:1463:21 | StoreValue | r1463_10 |
|
||||
| ir.cpp:1466:15:1466:15 | Address | &:r1466_1 |
|
||||
| ir.cpp:1466:16:1466:16 | Address | &:r1466_5 |
|
||||
| ir.cpp:1466:20:1466:20 | Address | &:r1466_6 |
|
||||
| ir.cpp:1466:26:1466:27 | StoreValue | r1466_3 |
|
||||
| ir.cpp:1466:26:1466:27 | Unary | r1466_2 |
|
||||
| ir.cpp:1467:9:1467:10 | Address | &:r1467_2 |
|
||||
| ir.cpp:1467:14:1467:14 | StoreValue | r1467_1 |
|
||||
| ir.cpp:1468:14:1468:16 | Address | &:r1468_1 |
|
||||
| ir.cpp:1468:20:1468:21 | StoreValue | r1468_3 |
|
||||
| ir.cpp:1468:20:1468:21 | Unary | r1468_2 |
|
||||
| ir.cpp:1469:13:1469:13 | Address | &:r1469_1 |
|
||||
| ir.cpp:1469:17:1469:18 | Address | &:r1469_2 |
|
||||
| ir.cpp:1469:17:1469:18 | Load | m1467_3 |
|
||||
| ir.cpp:1469:17:1469:18 | StoreValue | r1469_3 |
|
||||
| ir.cpp:1473:15:1473:36 | Address | &:r1473_1 |
|
||||
| ir.cpp:1473:40:1473:41 | StoreValue | r1473_3 |
|
||||
| ir.cpp:1473:40:1473:41 | Unary | r1473_2 |
|
||||
| ir.cpp:1474:15:1474:16 | Address | &:r1474_1 |
|
||||
| ir.cpp:1474:20:1474:21 | Left | r1474_3 |
|
||||
| ir.cpp:1474:20:1474:21 | Unary | r1474_2 |
|
||||
| ir.cpp:1474:20:1474:24 | StoreValue | r1474_6 |
|
||||
| ir.cpp:1474:20:1474:24 | Unary | r1474_5 |
|
||||
| ir.cpp:1474:23:1474:23 | Right | r1474_4 |
|
||||
| ir.cpp:1475:15:1475:16 | Address | &:r1475_1 |
|
||||
| ir.cpp:1475:20:1475:21 | Left | r1475_3 |
|
||||
| ir.cpp:1475:20:1475:21 | Unary | r1475_2 |
|
||||
| ir.cpp:1475:20:1475:24 | StoreValue | r1475_6 |
|
||||
| ir.cpp:1475:20:1475:24 | Unary | r1475_5 |
|
||||
| ir.cpp:1475:23:1475:23 | Right | r1475_4 |
|
||||
| ir.cpp:1476:9:1476:10 | Address | &:r1476_2 |
|
||||
| ir.cpp:1476:9:1476:10 | Address | &:r1476_4 |
|
||||
| ir.cpp:1476:9:1476:10 | Load | m1475_7 |
|
||||
| ir.cpp:1476:9:1476:10 | Unary | r1476_3 |
|
||||
| ir.cpp:1476:9:1476:14 | ChiPartial | partial:m1476_5 |
|
||||
| ir.cpp:1476:9:1476:14 | ChiTotal | total:m1463_12 |
|
||||
| ir.cpp:1476:14:1476:14 | StoreValue | r1476_1 |
|
||||
| ir.cpp:1477:14:1477:16 | Address | &:r1477_1 |
|
||||
| ir.cpp:1477:20:1477:21 | Address | &:r1477_2 |
|
||||
| ir.cpp:1477:20:1477:21 | Load | m1475_7 |
|
||||
| ir.cpp:1477:20:1477:21 | StoreValue | r1477_5 |
|
||||
| ir.cpp:1477:20:1477:21 | Unary | r1477_3 |
|
||||
| ir.cpp:1477:20:1477:21 | Unary | r1477_4 |
|
||||
| ir.cpp:1478:13:1478:13 | Address | &:r1478_1 |
|
||||
| ir.cpp:1478:17:1478:18 | Address | &:r1478_2 |
|
||||
| ir.cpp:1478:17:1478:18 | Address | &:r1478_3 |
|
||||
| ir.cpp:1478:17:1478:18 | Load | m1475_7 |
|
||||
| ir.cpp:1478:17:1478:18 | Load | m1476_5 |
|
||||
| ir.cpp:1478:17:1478:18 | StoreValue | r1478_4 |
|
||||
| perf-regression.cpp:6:3:6:5 | Address | &:r6_5 |
|
||||
| perf-regression.cpp:6:3:6:5 | Address | &:r6_5 |
|
||||
| perf-regression.cpp:6:3:6:5 | Address | &:r6_7 |
|
||||
|
||||
@@ -7896,6 +7896,91 @@ ir.cpp:
|
||||
# 1457| v1457_13(void) = AliasedUse : ~m?
|
||||
# 1457| v1457_14(void) = ExitFunction :
|
||||
|
||||
# 1462| void array_structured_binding()
|
||||
# 1462| Block 0
|
||||
# 1462| v1462_1(void) = EnterFunction :
|
||||
# 1462| mu1462_2(unknown) = AliasedDefinition :
|
||||
# 1462| mu1462_3(unknown) = InitializeNonLocal :
|
||||
# 1463| r1463_1(glval<int[2]>) = VariableAddress[xs] :
|
||||
# 1463| mu1463_2(int[2]) = Uninitialized[xs] : &:r1463_1
|
||||
# 1463| r1463_3(int) = Constant[0] :
|
||||
# 1463| r1463_4(glval<int>) = PointerAdd[4] : r1463_1, r1463_3
|
||||
# 1463| r1463_5(int) = Constant[1] :
|
||||
# 1463| mu1463_6(int) = Store[?] : &:r1463_4, r1463_5
|
||||
# 1463| r1463_7(int) = Constant[1] :
|
||||
# 1463| r1463_8(glval<int>) = PointerAdd[4] : r1463_1, r1463_7
|
||||
# 1463| r1463_9(int) = Constant[2] :
|
||||
# 1463| mu1463_10(int) = Store[?] : &:r1463_8, r1463_9
|
||||
# 1466| r1466_1(glval<int(&)[2]>) = VariableAddress[(unnamed local variable)] :
|
||||
# 1466| r1466_2(glval<int[2]>) = VariableAddress[xs] :
|
||||
# 1466| r1466_3(int(&)[2]) = CopyValue : r1466_2
|
||||
# 1466| mu1466_4(int(&)[2]) = Store[(unnamed local variable)] : &:r1466_1, r1466_3
|
||||
# 1466| r1466_5(glval<int>) = VariableAddress[x0] :
|
||||
#-----| r0_1(glval<int(&)[2]>) = VariableAddress[(unnamed local variable)] :
|
||||
#-----| r0_2(int(&)[2]) = Load[(unnamed local variable)] : &:r0_1, ~m?
|
||||
#-----| r0_3(glval<int[2]>) = CopyValue : r0_2
|
||||
#-----| r0_4(int *) = Convert : r0_3
|
||||
#-----| r0_5(unsigned long) = Constant[0] :
|
||||
#-----| r0_6(glval<int>) = PointerAdd[4] : r0_4, r0_5
|
||||
#-----| mu0_7(int) = Store[x0] : &:r1466_5, r0_6
|
||||
# 1466| r1466_6(glval<int>) = VariableAddress[x1] :
|
||||
#-----| r0_8(glval<int(&)[2]>) = VariableAddress[(unnamed local variable)] :
|
||||
#-----| r0_9(int(&)[2]) = Load[(unnamed local variable)] : &:r0_8, ~m?
|
||||
#-----| r0_10(glval<int[2]>) = CopyValue : r0_9
|
||||
#-----| r0_11(int *) = Convert : r0_10
|
||||
#-----| r0_12(unsigned long) = Constant[1] :
|
||||
#-----| r0_13(glval<int>) = PointerAdd[4] : r0_11, r0_12
|
||||
#-----| mu0_14(int) = Store[x1] : &:r1466_6, r0_13
|
||||
# 1467| r1467_1(int) = Constant[3] :
|
||||
# 1467| r1467_2(glval<int>) = VariableAddress[x1] :
|
||||
# 1467| mu1467_3(int) = Store[x1] : &:r1467_2, r1467_1
|
||||
# 1468| r1468_1(glval<int &>) = VariableAddress[rx1] :
|
||||
# 1468| r1468_2(glval<int>) = VariableAddress[x1] :
|
||||
# 1468| r1468_3(int &) = CopyValue : r1468_2
|
||||
# 1468| mu1468_4(int &) = Store[rx1] : &:r1468_1, r1468_3
|
||||
# 1469| r1469_1(glval<int>) = VariableAddress[x] :
|
||||
# 1469| r1469_2(glval<int>) = VariableAddress[x1] :
|
||||
# 1469| r1469_3(int) = Load[x1] : &:r1469_2, ~m?
|
||||
# 1469| mu1469_4(int) = Store[x] : &:r1469_1, r1469_3
|
||||
# 1473| r1473_1(glval<int(&)[2]>) = VariableAddress[unnamed_local_variable] :
|
||||
# 1473| r1473_2(glval<int[2]>) = VariableAddress[xs] :
|
||||
# 1473| r1473_3(int(&)[2]) = CopyValue : r1473_2
|
||||
# 1473| mu1473_4(int(&)[2]) = Store[unnamed_local_variable] : &:r1473_1, r1473_3
|
||||
# 1474| r1474_1(glval<int &>) = VariableAddress[x0] :
|
||||
# 1474| r1474_2(glval<int[2]>) = VariableAddress[xs] :
|
||||
# 1474| r1474_3(int *) = Convert : r1474_2
|
||||
# 1474| r1474_4(int) = Constant[0] :
|
||||
# 1474| r1474_5(glval<int>) = PointerAdd[4] : r1474_3, r1474_4
|
||||
# 1474| r1474_6(int &) = CopyValue : r1474_5
|
||||
# 1474| mu1474_7(int &) = Store[x0] : &:r1474_1, r1474_6
|
||||
# 1475| r1475_1(glval<int &>) = VariableAddress[x1] :
|
||||
# 1475| r1475_2(glval<int[2]>) = VariableAddress[xs] :
|
||||
# 1475| r1475_3(int *) = Convert : r1475_2
|
||||
# 1475| r1475_4(int) = Constant[1] :
|
||||
# 1475| r1475_5(glval<int>) = PointerAdd[4] : r1475_3, r1475_4
|
||||
# 1475| r1475_6(int &) = CopyValue : r1475_5
|
||||
# 1475| mu1475_7(int &) = Store[x1] : &:r1475_1, r1475_6
|
||||
# 1476| r1476_1(int) = Constant[3] :
|
||||
# 1476| r1476_2(glval<int &>) = VariableAddress[x1] :
|
||||
# 1476| r1476_3(int &) = Load[x1] : &:r1476_2, ~m?
|
||||
# 1476| r1476_4(glval<int>) = CopyValue : r1476_3
|
||||
# 1476| mu1476_5(int) = Store[?] : &:r1476_4, r1476_1
|
||||
# 1477| r1477_1(glval<int &>) = VariableAddress[rx1] :
|
||||
# 1477| r1477_2(glval<int &>) = VariableAddress[x1] :
|
||||
# 1477| r1477_3(int &) = Load[x1] : &:r1477_2, ~m?
|
||||
# 1477| r1477_4(glval<int>) = CopyValue : r1477_3
|
||||
# 1477| r1477_5(int &) = CopyValue : r1477_4
|
||||
# 1477| mu1477_6(int &) = Store[rx1] : &:r1477_1, r1477_5
|
||||
# 1478| r1478_1(glval<int>) = VariableAddress[x] :
|
||||
# 1478| r1478_2(glval<int &>) = VariableAddress[x1] :
|
||||
# 1478| r1478_3(int &) = Load[x1] : &:r1478_2, ~m?
|
||||
# 1478| r1478_4(int) = Load[?] : &:r1478_3, ~m?
|
||||
# 1478| mu1478_5(int) = Store[x] : &:r1478_1, r1478_4
|
||||
# 1480| v1480_1(void) = NoOp :
|
||||
# 1462| v1462_4(void) = ReturnVoid :
|
||||
# 1462| v1462_5(void) = AliasedUse : ~m?
|
||||
# 1462| v1462_6(void) = ExitFunction :
|
||||
|
||||
perf-regression.cpp:
|
||||
# 6| void Big::Big()
|
||||
# 6| Block 0
|
||||
|
||||
Reference in New Issue
Block a user