C++: Add IR test that exposes a gap in the extractor output

This commit is contained in:
Jeroen Ketema
2022-08-11 12:57:20 +02:00
parent 1d56330baa
commit de142b276d
9 changed files with 388 additions and 0 deletions

View File

@@ -13975,6 +13975,150 @@ ir.cpp:
# 1815| Type = [IntType] int
# 1815| ValueCategory = prvalue(load)
# 1817| getStmt(8): [ReturnStmt] return ...
# 1834| [CopyAssignmentOperator] block_assignment::A& block_assignment::A::operator=(block_assignment::A const&)
# 1834| <params>:
#-----| getParameter(0): [Parameter] (unnamed parameter 0)
#-----| Type = [LValueReferenceType] const A &
# 1834| [MoveAssignmentOperator] block_assignment::A& block_assignment::A::operator=(block_assignment::A&&)
# 1834| <params>:
#-----| getParameter(0): [Parameter] (unnamed parameter 0)
#-----| Type = [RValueReferenceType] A &&
#-----| getEntryPoint(): [BlockStmt] { ... }
#-----| getStmt(0): [ExprStmt] ExprStmt
#-----| getStmt(1): [ReturnStmt] return ...
#-----| getExpr(): [PointerDereferenceExpr] * ...
#-----| Type = [Class] A
#-----| ValueCategory = lvalue
#-----| getOperand(): [ThisExpr] this
#-----| Type = [PointerType] A *
#-----| ValueCategory = prvalue(load)
#-----| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to)
#-----| Type = [LValueReferenceType] A &
#-----| ValueCategory = prvalue
# 1834| [Constructor] void block_assignment::A::A()
# 1834| <params>:
# 1834| [CopyConstructor] void block_assignment::A::A(block_assignment::A const&)
# 1834| <params>:
#-----| getParameter(0): [Parameter] (unnamed parameter 0)
#-----| Type = [LValueReferenceType] const A &
# 1834| [MoveConstructor] void block_assignment::A::A(block_assignment::A&&)
# 1834| <params>:
#-----| getParameter(0): [Parameter] (unnamed parameter 0)
#-----| Type = [RValueReferenceType] A &&
# 1836| [VirtualFunction] void block_assignment::A::f()
# 1836| <params>:
# 1839| [CopyAssignmentOperator] block_assignment::B& block_assignment::B::operator=(block_assignment::B const&)
# 1839| <params>:
#-----| getParameter(0): [Parameter] (unnamed parameter 0)
#-----| Type = [LValueReferenceType] const B &
# 1839| [MoveAssignmentOperator] block_assignment::B& block_assignment::B::operator=(block_assignment::B&&)
# 1839| <params>:
#-----| getParameter(0): [Parameter] (unnamed parameter 0)
#-----| Type = [RValueReferenceType] B &&
#-----| getEntryPoint(): [BlockStmt] { ... }
#-----| getStmt(0): [ExprStmt] ExprStmt
# 1839| getExpr(): [FunctionCall] call to operator=
# 1839| Type = [LValueReferenceType] A &
# 1839| ValueCategory = prvalue
# 1839| getQualifier(): [ThisExpr] this
# 1839| Type = [PointerType] B *
# 1839| ValueCategory = prvalue(load)
# 1839| getArgument(0): [PointerDereferenceExpr] * ...
# 1839| Type = [Class] A
# 1839| ValueCategory = xvalue
# 1839| getOperand(): [AddressOfExpr] & ...
# 1839| Type = [PointerType] B *
# 1839| ValueCategory = prvalue
# 1839| getOperand(): [VariableAccess] (unnamed parameter 0)
# 1839| Type = [RValueReferenceType] B &&
# 1839| ValueCategory = prvalue(load)
#-----| getOperand().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference)
#-----| Type = [Struct] B
#-----| ValueCategory = lvalue
#-----| getOperand().getFullyConverted(): [CStyleCast] (A *)...
#-----| Conversion = [BaseClassConversion] base class conversion
#-----| Type = [PointerType] A *
#-----| ValueCategory = prvalue
#-----| getQualifier().getFullyConverted(): [CStyleCast] (A *)...
#-----| Conversion = [BaseClassConversion] base class conversion
#-----| Type = [PointerType] A *
#-----| ValueCategory = prvalue
#-----| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to)
#-----| Type = [LValueReferenceType] A &
#-----| ValueCategory = prvalue
#-----| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference)
#-----| Type = [Class] A
#-----| ValueCategory = lvalue
#-----| getStmt(1): [ReturnStmt] return ...
#-----| getExpr(): [PointerDereferenceExpr] * ...
#-----| Type = [Struct] B
#-----| ValueCategory = lvalue
#-----| getOperand(): [ThisExpr] this
#-----| Type = [PointerType] B *
#-----| ValueCategory = prvalue(load)
#-----| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to)
#-----| Type = [LValueReferenceType] B &
#-----| ValueCategory = prvalue
# 1839| [CopyConstructor] void block_assignment::B::B(block_assignment::B const&)
# 1839| <params>:
#-----| getParameter(0): [Parameter] (unnamed parameter 0)
#-----| Type = [LValueReferenceType] const B &
# 1839| [MoveConstructor] void block_assignment::B::B(block_assignment::B&&)
# 1839| <params>:
#-----| getParameter(0): [Parameter] (unnamed parameter 0)
#-----| Type = [RValueReferenceType] B &&
# 1840| [Constructor] void block_assignment::B::B(block_assignment::A*)
# 1840| <params>:
# 1840| getParameter(0): [Parameter] (unnamed parameter 0)
# 1840| Type = [PointerType] A *
# 1843| [TopLevelFunction] void block_assignment::foo()
# 1843| <params>:
# 1843| getEntryPoint(): [BlockStmt] { ... }
# 1844| getStmt(0): [DeclStmt] declaration
# 1844| getDeclarationEntry(0): [VariableDeclarationEntry] definition of v
# 1844| Type = [Struct] B
# 1844| getVariable().getInitializer(): [Initializer] initializer for v
# 1844| getExpr(): [ConstructorCall] call to B
# 1844| Type = [VoidType] void
# 1844| ValueCategory = prvalue
# 1844| getArgument(0): [Literal] 0
# 1844| Type = [IntType] int
# 1844| Value = [Literal] 0
# 1844| ValueCategory = prvalue
# 1844| getArgument(0).getFullyConverted(): [CStyleCast] (A *)...
# 1844| Conversion = [IntegralToPointerConversion] integral to pointer conversion
# 1844| Type = [PointerType] A *
# 1844| Value = [CStyleCast] 0
# 1844| ValueCategory = prvalue
# 1845| getStmt(1): [ExprStmt] ExprStmt
# 1845| getExpr(): [FunctionCall] call to operator=
# 1845| Type = [LValueReferenceType] B &
# 1845| ValueCategory = prvalue
# 1845| getQualifier(): [VariableAccess] v
# 1845| Type = [Struct] B
# 1845| ValueCategory = lvalue
# 1845| getArgument(0): [ConstructorCall] call to B
# 1845| Type = [VoidType] void
# 1845| ValueCategory = prvalue
# 1845| getArgument(0): [Literal] 0
# 1845| Type = [IntType] int
# 1845| Value = [Literal] 0
# 1845| ValueCategory = prvalue
# 1845| getArgument(0).getFullyConverted(): [CStyleCast] (A *)...
# 1845| Conversion = [IntegralToPointerConversion] integral to pointer conversion
# 1845| Type = [PointerType] A *
# 1845| Value = [CStyleCast] 0
# 1845| ValueCategory = prvalue
# 1845| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to)
# 1845| Type = [LValueReferenceType] B &
# 1845| ValueCategory = prvalue
# 1845| getExpr(): [TemporaryObjectExpr] temporary object
# 1845| Type = [Struct] B
# 1845| ValueCategory = lvalue
# 1845| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference)
# 1845| Type = [Struct] B
# 1845| ValueCategory = lvalue
# 1846| getStmt(2): [ReturnStmt] return ...
perf-regression.cpp:
# 4| [CopyAssignmentOperator] Big& Big::operator=(Big const&)
# 4| <params>:

View File

@@ -6,6 +6,7 @@ missingOperandType
duplicateChiOperand
sideEffectWithoutPrimary
instructionWithoutSuccessor
| file://:0:0:0:0 | InitializeIndirection: (unnamed parameter 0) | Instruction 'InitializeIndirection: (unnamed parameter 0)' has no successors in function '$@'. | ir.cpp:1834:11:1834:11 | block_assignment::A& block_assignment::A::operator=(block_assignment::A&&) | block_assignment::A& block_assignment::A::operator=(block_assignment::A&&) |
ambiguousSuccessors
unexplainedLoop
unnecessaryPhiInstruction

View File

@@ -6,6 +6,7 @@ missingOperandType
duplicateChiOperand
sideEffectWithoutPrimary
instructionWithoutSuccessor
| file://:0:0:0:0 | InitializeIndirection: (unnamed parameter 0) | Instruction 'InitializeIndirection: (unnamed parameter 0)' has no successors in function '$@'. | ir.cpp:1834:11:1834:11 | block_assignment::A& block_assignment::A::operator=(block_assignment::A&&) | block_assignment::A& block_assignment::A::operator=(block_assignment::A&&) |
ambiguousSuccessors
unexplainedLoop
unnecessaryPhiInstruction

View File

@@ -1830,4 +1830,20 @@ char *global_string = "global string";
int global_6 = global_2;
namespace block_assignment {
class A {
enum {} e[1];
virtual void f();
};
struct B : A {
B(A *);
};
void foo() {
B v(0);
v = 0;
}
}
// semmle-extractor-options: -std=c++17 --clang

View File

@@ -674,6 +674,10 @@
| 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_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 |
@@ -694,6 +698,11 @@
| file://:0:0:0:0 | Address | &:r0_3 |
| file://:0:0:0:0 | Address | &:r0_3 |
| file://:0:0:0:0 | Address | &:r0_3 |
| file://:0:0:0:0 | Address | &:r0_3 |
| file://:0:0:0:0 | Address | &:r0_3 |
| file://:0:0:0:0 | Address | &:r0_3 |
| file://:0:0:0:0 | Address | &:r0_5 |
| file://:0:0:0:0 | Address | &:r0_5 |
| file://:0:0:0:0 | Address | &:r0_5 |
| file://:0:0:0:0 | Address | &:r0_5 |
| file://:0:0:0:0 | Address | &:r0_5 |
@@ -706,6 +715,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_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 |
@@ -715,6 +726,8 @@
| file://:0:0:0:0 | Address | &:r0_15 |
| file://:0:0:0:0 | Address | &:r0_15 |
| file://:0:0:0:0 | Address | &:r0_15 |
| file://:0:0:0:0 | Address | &:r0_16 |
| file://:0:0:0:0 | Address | &:r0_17 |
| file://:0:0:0:0 | Address | &:r0_18 |
| file://:0:0:0:0 | Address | &:r0_18 |
| file://:0:0:0:0 | Address | &:r0_19 |
@@ -722,6 +735,7 @@
| file://:0:0:0:0 | Arg(0) | 0:r0_6 |
| file://:0:0:0:0 | Arg(0) | 0:r0_8 |
| file://:0:0:0:0 | Arg(0) | 0:r0_8 |
| file://:0:0:0:0 | Arg(0) | 0:r0_8 |
| file://:0:0:0:0 | Arg(0) | 0:r0_15 |
| file://:0:0:0:0 | Arg(0) | 0:r0_15 |
| file://:0:0:0:0 | CallTarget | func:r0_1 |
@@ -734,8 +748,11 @@
| file://:0:0:0:0 | ChiPartial | partial:m0_8 |
| file://:0:0:0:0 | ChiPartial | partial:m0_11 |
| file://:0:0:0:0 | ChiPartial | partial:m0_11 |
| file://:0:0:0:0 | ChiPartial | partial:m0_11 |
| file://:0:0:0:0 | ChiPartial | partial:m0_13 |
| file://:0:0:0:0 | ChiTotal | total:m0_3 |
| file://:0:0:0:0 | ChiTotal | total:m0_4 |
| file://:0:0:0:0 | ChiTotal | total:m0_4 |
| file://:0:0:0:0 | ChiTotal | total:m754_8 |
| file://:0:0:0:0 | ChiTotal | total:m763_8 |
| file://:0:0:0:0 | ChiTotal | total:m1043_10 |
@@ -743,6 +760,7 @@
| file://:0:0:0:0 | ChiTotal | total:m1688_3 |
| file://:0:0:0:0 | ChiTotal | total:m1716_8 |
| file://:0:0:0:0 | ChiTotal | total:m1716_19 |
| file://:0:0:0:0 | ChiTotal | total:m1839_8 |
| file://:0:0:0:0 | Left | r0_2 |
| file://:0:0:0:0 | Left | r0_4 |
| file://:0:0:0:0 | Left | r0_7 |
@@ -756,6 +774,8 @@
| file://:0:0:0:0 | Load | m0_2 |
| file://:0:0:0:0 | Load | m0_2 |
| file://:0:0:0:0 | Load | m0_2 |
| file://:0:0:0:0 | Load | m0_2 |
| file://:0:0:0:0 | Load | m0_2 |
| file://:0:0:0:0 | Load | m745_6 |
| file://:0:0:0:0 | Load | m754_6 |
| file://:0:0:0:0 | Load | m763_6 |
@@ -763,6 +783,7 @@
| file://:0:0:0:0 | Load | m1466_4 |
| file://:0:0:0:0 | Load | m1685_9 |
| file://:0:0:0:0 | Load | m1714_7 |
| file://:0:0:0:0 | Load | m1839_6 |
| file://:0:0:0:0 | Load | ~m1444_6 |
| file://:0:0:0:0 | Load | ~m1712_10 |
| file://:0:0:0:0 | Load | ~m1712_14 |
@@ -779,6 +800,7 @@
| file://:0:0:0:0 | SideEffect | m0_4 |
| file://:0:0:0:0 | SideEffect | m0_4 |
| file://:0:0:0:0 | SideEffect | m0_4 |
| file://:0:0:0:0 | SideEffect | m0_14 |
| file://:0:0:0:0 | SideEffect | m1078_23 |
| file://:0:0:0:0 | SideEffect | m1078_23 |
| file://:0:0:0:0 | SideEffect | m1084_23 |
@@ -788,6 +810,7 @@
| file://:0:0:0:0 | SideEffect | ~m0_4 |
| file://:0:0:0:0 | SideEffect | ~m0_4 |
| file://:0:0:0:0 | SideEffect | ~m0_4 |
| file://:0:0:0:0 | SideEffect | ~m0_4 |
| file://:0:0:0:0 | SideEffect | ~m96_8 |
| file://:0:0:0:0 | SideEffect | ~m754_8 |
| file://:0:0:0:0 | SideEffect | ~m763_8 |
@@ -797,6 +820,7 @@
| file://:0:0:0:0 | SideEffect | ~m1077_8 |
| file://:0:0:0:0 | SideEffect | ~m1240_4 |
| file://:0:0:0:0 | SideEffect | ~m1447_6 |
| file://:0:0:0:0 | SideEffect | ~m1839_8 |
| file://:0:0:0:0 | StoreValue | r0_1 |
| file://:0:0:0:0 | StoreValue | r0_1 |
| file://:0:0:0:0 | StoreValue | r0_1 |
@@ -812,6 +836,7 @@
| file://:0:0:0:0 | StoreValue | r0_9 |
| file://:0:0:0:0 | StoreValue | r0_13 |
| file://:0:0:0:0 | StoreValue | r0_13 |
| file://:0:0:0:0 | StoreValue | r0_20 |
| file://:0:0:0:0 | StoreValue | r0_22 |
| file://:0:0:0:0 | StoreValue | r0_22 |
| file://:0:0:0:0 | Unary | r0_1 |
@@ -824,6 +849,8 @@
| file://:0:0:0:0 | Unary | r0_6 |
| file://:0:0:0:0 | Unary | r0_6 |
| file://:0:0:0:0 | Unary | r0_6 |
| file://:0:0:0:0 | Unary | r0_6 |
| file://:0:0:0:0 | Unary | r0_7 |
| file://:0:0:0:0 | Unary | r0_7 |
| file://:0:0:0:0 | Unary | r0_7 |
| file://:0:0:0:0 | Unary | r0_7 |
@@ -836,6 +863,8 @@
| file://:0:0:0:0 | Unary | r0_12 |
| file://:0:0:0:0 | Unary | r0_14 |
| file://:0:0:0:0 | Unary | r0_14 |
| file://:0:0:0:0 | Unary | r0_18 |
| file://:0:0:0:0 | Unary | r0_19 |
| file://:0:0:0:0 | Unary | r0_20 |
| file://:0:0:0:0 | Unary | r0_20 |
| file://:0:0:0:0 | Unary | r0_21 |
@@ -8504,6 +8533,88 @@
| ir.cpp:1831:16:1831:23 | ChiTotal | total:m1831_2 |
| ir.cpp:1831:16:1831:23 | Load | ~m1831_2 |
| ir.cpp:1831:16:1831:23 | StoreValue | r1831_5 |
| ir.cpp:1834:11:1834:11 | Address | &:r1834_5 |
| ir.cpp:1834:11:1834:11 | Address | &:r1834_5 |
| ir.cpp:1834:11:1834:11 | Address | &:r1834_7 |
| ir.cpp:1834:11:1834:11 | ChiPartial | partial:m1834_3 |
| ir.cpp:1834:11:1834:11 | ChiTotal | total:m1834_2 |
| ir.cpp:1834:11:1834:11 | Load | m1834_6 |
| ir.cpp:1839:12:1839:12 | Address | &:r1839_5 |
| ir.cpp:1839:12:1839:12 | Address | &:r1839_5 |
| ir.cpp:1839:12:1839:12 | Address | &:r1839_7 |
| ir.cpp:1839:12:1839:12 | Address | &:r1839_7 |
| ir.cpp:1839:12:1839:12 | Address | &:r1839_9 |
| ir.cpp:1839:12:1839:12 | Address | &:r1839_12 |
| ir.cpp:1839:12:1839:12 | Address | &:r1839_20 |
| ir.cpp:1839:12:1839:12 | Arg(this) | this:r0_5 |
| ir.cpp:1839:12:1839:12 | CallTarget | func:r1839_11 |
| ir.cpp:1839:12:1839:12 | ChiPartial | partial:m1839_3 |
| ir.cpp:1839:12:1839:12 | ChiPartial | partial:m1839_17 |
| ir.cpp:1839:12:1839:12 | ChiTotal | total:m1839_2 |
| ir.cpp:1839:12:1839:12 | ChiTotal | total:m1839_4 |
| ir.cpp:1839:12:1839:12 | Load | m0_2 |
| ir.cpp:1839:12:1839:12 | Load | m0_21 |
| ir.cpp:1839:12:1839:12 | Load | m1839_6 |
| ir.cpp:1839:12:1839:12 | Load | m1839_6 |
| ir.cpp:1839:12:1839:12 | SideEffect | m0_12 |
| ir.cpp:1839:12:1839:12 | SideEffect | ~m1839_4 |
| ir.cpp:1839:12:1839:12 | SideEffect | ~m1839_18 |
| ir.cpp:1839:12:1839:12 | Unary | r1839_10 |
| ir.cpp:1839:12:1839:12 | Unary | r1839_13 |
| ir.cpp:1839:12:1839:12 | Unary | r1839_14 |
| ir.cpp:1839:12:1839:12 | Unary | r1839_15 |
| ir.cpp:1839:12:1839:12 | Unary | r1839_16 |
| ir.cpp:1843:10:1843:12 | ChiPartial | partial:m1843_3 |
| ir.cpp:1843:10:1843:12 | ChiTotal | total:m1843_2 |
| ir.cpp:1843:10:1843:12 | SideEffect | ~m1845_18 |
| ir.cpp:1844:11:1844:11 | Address | &:r1844_1 |
| ir.cpp:1844:11:1844:11 | Address | &:r1844_1 |
| ir.cpp:1844:11:1844:11 | Arg(this) | this:r1844_1 |
| ir.cpp:1844:13:1844:13 | Address | &:r1844_4 |
| ir.cpp:1844:13:1844:13 | Address | &:r1844_4 |
| ir.cpp:1844:13:1844:13 | Arg(0) | 0:r1844_4 |
| ir.cpp:1844:13:1844:13 | ChiPartial | partial:m1844_11 |
| ir.cpp:1844:13:1844:13 | ChiTotal | total:m1844_7 |
| ir.cpp:1844:13:1844:13 | SideEffect | ~m1844_7 |
| ir.cpp:1844:13:1844:14 | CallTarget | func:r1844_3 |
| ir.cpp:1844:13:1844:14 | ChiPartial | partial:m1844_6 |
| ir.cpp:1844:13:1844:14 | ChiPartial | partial:m1844_9 |
| ir.cpp:1844:13:1844:14 | ChiTotal | total:m1843_4 |
| ir.cpp:1844:13:1844:14 | ChiTotal | total:m1844_2 |
| ir.cpp:1844:13:1844:14 | SideEffect | ~m1843_4 |
| ir.cpp:1845:9:1845:9 | Address | &:r1845_1 |
| ir.cpp:1845:9:1845:9 | Address | &:r1845_1 |
| ir.cpp:1845:9:1845:9 | Arg(this) | this:r1845_1 |
| ir.cpp:1845:9:1845:9 | ChiPartial | partial:m1845_21 |
| ir.cpp:1845:9:1845:9 | ChiTotal | total:m1844_10 |
| ir.cpp:1845:9:1845:9 | SideEffect | m1844_10 |
| ir.cpp:1845:11:1845:11 | CallTarget | func:r1845_2 |
| ir.cpp:1845:11:1845:11 | ChiPartial | partial:m1845_17 |
| ir.cpp:1845:11:1845:11 | ChiTotal | total:m1845_14 |
| ir.cpp:1845:11:1845:11 | SideEffect | ~m1845_14 |
| ir.cpp:1845:11:1845:11 | Unary | r1845_16 |
| ir.cpp:1845:13:1845:13 | Address | &:r1845_3 |
| ir.cpp:1845:13:1845:13 | Address | &:r1845_3 |
| ir.cpp:1845:13:1845:13 | Address | &:r1845_6 |
| ir.cpp:1845:13:1845:13 | Address | &:r1845_6 |
| ir.cpp:1845:13:1845:13 | Address | &:r1845_15 |
| ir.cpp:1845:13:1845:13 | Address | &:r1845_15 |
| ir.cpp:1845:13:1845:13 | Arg(0) | 0:r1845_6 |
| ir.cpp:1845:13:1845:13 | Arg(0) | 0:r1845_15 |
| ir.cpp:1845:13:1845:13 | Arg(this) | this:r1845_3 |
| ir.cpp:1845:13:1845:13 | CallTarget | func:r1845_5 |
| ir.cpp:1845:13:1845:13 | ChiPartial | partial:m1845_8 |
| ir.cpp:1845:13:1845:13 | ChiPartial | partial:m1845_11 |
| ir.cpp:1845:13:1845:13 | ChiPartial | partial:m1845_13 |
| ir.cpp:1845:13:1845:13 | ChiPartial | partial:m1845_23 |
| ir.cpp:1845:13:1845:13 | ChiTotal | total:m1844_12 |
| ir.cpp:1845:13:1845:13 | ChiTotal | total:m1845_4 |
| ir.cpp:1845:13:1845:13 | ChiTotal | total:m1845_9 |
| ir.cpp:1845:13:1845:13 | ChiTotal | total:m1845_12 |
| ir.cpp:1845:13:1845:13 | SideEffect | ~m1844_12 |
| ir.cpp:1845:13:1845:13 | SideEffect | ~m1845_9 |
| ir.cpp:1845:13:1845:13 | SideEffect | ~m1845_12 |
| ir.cpp:1845:13:1845:13 | Unary | r1845_3 |
| 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 |

View File

@@ -7,6 +7,7 @@ duplicateChiOperand
sideEffectWithoutPrimary
instructionWithoutSuccessor
| ../../../include/memory.h:68:25:68:33 | CopyValue: (reference to) | Instruction 'CopyValue: (reference to)' has no successors in function '$@'. | ../../../include/memory.h:67:5:67:5 | void std::unique_ptr<int, std::default_delete<int>>::~unique_ptr() | void std::unique_ptr<int, std::default_delete<int>>::~unique_ptr() |
| file://:0:0:0:0 | InitializeIndirection: (unnamed parameter 0) | Instruction 'InitializeIndirection: (unnamed parameter 0)' has no successors in function '$@'. | ir.cpp:1834:11:1834:11 | block_assignment::A& block_assignment::A::operator=(block_assignment::A&&) | block_assignment::A& block_assignment::A::operator=(block_assignment::A&&) |
ambiguousSuccessors
unexplainedLoop
unnecessaryPhiInstruction
@@ -17,9 +18,11 @@ containsLoopOfForwardEdges
lostReachability
backEdgeCountMismatch
useNotDominatedByDefinition
| file://:0:0:0:0 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | ir.cpp:1834:11:1834:11 | block_assignment::A& block_assignment::A::operator=(block_assignment::A&&) | block_assignment::A& block_assignment::A::operator=(block_assignment::A&&) |
| ir.cpp:1486:8:1486:8 | Unary | Operand 'Unary' is not dominated by its definition in function '$@'. | ir.cpp:1486:8:1486:8 | void StructuredBindingDataMemberStruct::StructuredBindingDataMemberStruct() | void StructuredBindingDataMemberStruct::StructuredBindingDataMemberStruct() |
| ir.cpp:1751:51:1751:51 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | ir.cpp:1750:5:1750:34 | int implicit_copy_constructor_test(CopyConstructorTestNonVirtualClass const&, CopyConstructorTestVirtualClass const&) | int implicit_copy_constructor_test(CopyConstructorTestNonVirtualClass const&, CopyConstructorTestVirtualClass const&) |
| ir.cpp:1752:48:1752:48 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | ir.cpp:1750:5:1750:34 | int implicit_copy_constructor_test(CopyConstructorTestNonVirtualClass const&, CopyConstructorTestVirtualClass const&) | int implicit_copy_constructor_test(CopyConstructorTestNonVirtualClass const&, CopyConstructorTestVirtualClass const&) |
| ir.cpp:1834:11:1834:11 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | ir.cpp:1834:11:1834:11 | block_assignment::A& block_assignment::A::operator=(block_assignment::A&&) | block_assignment::A& block_assignment::A::operator=(block_assignment::A&&) |
switchInstructionWithoutDefaultEdge
notMarkedAsConflated
wronglyMarkedAsConflated

View File

@@ -9797,6 +9797,116 @@ ir.cpp:
# 1831| v1831_8(void) = AliasedUse : ~m?
# 1831| v1831_9(void) = ExitFunction :
# 1834| block_assignment::A& block_assignment::A::operator=(block_assignment::A&&)
# 1834| Block 0
# 1834| v1834_1(void) = EnterFunction :
# 1834| mu1834_2(unknown) = AliasedDefinition :
# 1834| mu1834_3(unknown) = InitializeNonLocal :
# 1834| r1834_4(glval<unknown>) = VariableAddress[#this] :
# 1834| mu1834_5(glval<A>) = InitializeParameter[#this] : &:r1834_4
# 1834| r1834_6(glval<A>) = Load[#this] : &:r1834_4, ~m?
# 1834| mu1834_7(A) = InitializeIndirection[#this] : &:r1834_6
#-----| r0_1(glval<A &&>) = VariableAddress[(unnamed parameter 0)] :
#-----| mu0_2(A &&) = InitializeParameter[(unnamed parameter 0)] : &:r0_1
#-----| r0_3(A &&) = Load[(unnamed parameter 0)] : &:r0_1, ~m?
#-----| mu0_4(unknown) = InitializeIndirection[(unnamed parameter 0)] : &:r0_3
#-----| Block 1
#-----| r0_5(glval<A &>) = VariableAddress[#return] :
#-----| r0_6(glval<unknown>) = VariableAddress[#this] :
#-----| r0_7(A *) = Load[#this] : &:r0_6, ~m?
#-----| r0_8(glval<A>) = CopyValue : r0_7
#-----| r0_9(A &) = CopyValue : r0_8
#-----| mu0_10(A &) = Store[#return] : &:r0_5, r0_9
# 1834| v1834_8(void) = ReturnIndirection[#this] : &:r1834_6, ~m?
#-----| v0_11(void) = ReturnIndirection[(unnamed parameter 0)] : &:r0_3, ~m?
# 1834| r1834_9(glval<A &>) = VariableAddress[#return] :
# 1834| v1834_10(void) = ReturnValue : &:r1834_9, ~m?
# 1834| v1834_11(void) = AliasedUse : ~m?
# 1834| v1834_12(void) = ExitFunction :
# 1839| block_assignment::B& block_assignment::B::operator=(block_assignment::B&&)
# 1839| Block 0
# 1839| v1839_1(void) = EnterFunction :
# 1839| mu1839_2(unknown) = AliasedDefinition :
# 1839| mu1839_3(unknown) = InitializeNonLocal :
# 1839| r1839_4(glval<unknown>) = VariableAddress[#this] :
# 1839| mu1839_5(glval<B>) = InitializeParameter[#this] : &:r1839_4
# 1839| r1839_6(glval<B>) = Load[#this] : &:r1839_4, ~m?
# 1839| mu1839_7(B) = InitializeIndirection[#this] : &:r1839_6
#-----| r0_1(glval<B &&>) = VariableAddress[(unnamed parameter 0)] :
#-----| mu0_2(B &&) = InitializeParameter[(unnamed parameter 0)] : &:r0_1
#-----| r0_3(B &&) = Load[(unnamed parameter 0)] : &:r0_1, ~m?
#-----| mu0_4(unknown) = InitializeIndirection[(unnamed parameter 0)] : &:r0_3
# 1839| r1839_8(glval<unknown>) = VariableAddress[#this] :
# 1839| r1839_9(B *) = Load[#this] : &:r1839_8, ~m?
#-----| r0_5(A *) = ConvertToNonVirtualBase[B : A] : r1839_9
# 1839| r1839_10(glval<unknown>) = FunctionAddress[operator=] :
# 1839| r1839_11(glval<B &&>) = VariableAddress[(unnamed parameter 0)] :
# 1839| r1839_12(B &&) = Load[(unnamed parameter 0)] : &:r1839_11, ~m?
#-----| r0_6(glval<B>) = CopyValue : r1839_12
# 1839| r1839_13(B *) = CopyValue : r0_6
#-----| r0_7(A *) = ConvertToNonVirtualBase[B : A] : r1839_13
# 1839| r1839_14(glval<A>) = CopyValue : r0_7
#-----| r0_8(A &) = CopyValue : r1839_14
# 1839| r1839_15(A &) = Call[operator=] : func:r1839_10, this:r0_5, 0:r0_8
# 1839| mu1839_16(unknown) = ^CallSideEffect : ~m?
#-----| v0_9(void) = ^IndirectReadSideEffect[-1] : &:r0_5, ~m?
#-----| v0_10(void) = ^BufferReadSideEffect[0] : &:r0_8, ~m?
#-----| mu0_11(A) = ^IndirectMayWriteSideEffect[-1] : &:r0_5
#-----| mu0_12(unknown) = ^BufferMayWriteSideEffect[0] : &:r0_8
#-----| r0_13(glval<A>) = CopyValue : r1839_15
#-----| r0_14(glval<B &>) = VariableAddress[#return] :
#-----| r0_15(glval<unknown>) = VariableAddress[#this] :
#-----| r0_16(B *) = Load[#this] : &:r0_15, ~m?
#-----| r0_17(glval<B>) = CopyValue : r0_16
#-----| r0_18(B &) = CopyValue : r0_17
#-----| mu0_19(B &) = Store[#return] : &:r0_14, r0_18
# 1839| v1839_17(void) = ReturnIndirection[#this] : &:r1839_6, ~m?
#-----| v0_20(void) = ReturnIndirection[(unnamed parameter 0)] : &:r0_3, ~m?
# 1839| r1839_18(glval<B &>) = VariableAddress[#return] :
# 1839| v1839_19(void) = ReturnValue : &:r1839_18, ~m?
# 1839| v1839_20(void) = AliasedUse : ~m?
# 1839| v1839_21(void) = ExitFunction :
# 1843| void block_assignment::foo()
# 1843| Block 0
# 1843| v1843_1(void) = EnterFunction :
# 1843| mu1843_2(unknown) = AliasedDefinition :
# 1843| mu1843_3(unknown) = InitializeNonLocal :
# 1844| r1844_1(glval<B>) = VariableAddress[v] :
# 1844| mu1844_2(B) = Uninitialized[v] : &:r1844_1
# 1844| r1844_3(glval<unknown>) = FunctionAddress[B] :
# 1844| r1844_4(A *) = Constant[0] :
# 1844| v1844_5(void) = Call[B] : func:r1844_3, this:r1844_1, 0:r1844_4
# 1844| mu1844_6(unknown) = ^CallSideEffect : ~m?
# 1844| v1844_7(void) = ^BufferReadSideEffect[0] : &:r1844_4, ~m?
# 1844| mu1844_8(B) = ^IndirectMayWriteSideEffect[-1] : &:r1844_1
# 1844| mu1844_9(unknown) = ^BufferMayWriteSideEffect[0] : &:r1844_4
# 1845| r1845_1(glval<B>) = VariableAddress[v] :
# 1845| r1845_2(glval<unknown>) = FunctionAddress[operator=] :
# 1845| r1845_3(glval<B>) = VariableAddress[#temp1845:13] :
# 1845| mu1845_4(B) = Uninitialized[#temp1845:13] : &:r1845_3
# 1845| r1845_5(glval<unknown>) = FunctionAddress[B] :
# 1845| r1845_6(A *) = Constant[0] :
# 1845| v1845_7(void) = Call[B] : func:r1845_5, this:r1845_3, 0:r1845_6
# 1845| mu1845_8(unknown) = ^CallSideEffect : ~m?
# 1845| v1845_9(void) = ^BufferReadSideEffect[0] : &:r1845_6, ~m?
# 1845| mu1845_10(B) = ^IndirectMayWriteSideEffect[-1] : &:r1845_3
# 1845| mu1845_11(unknown) = ^BufferMayWriteSideEffect[0] : &:r1845_6
# 1845| r1845_12(B &) = CopyValue : r1845_3
# 1845| r1845_13(B &) = Call[operator=] : func:r1845_2, this:r1845_1, 0:r1845_12
# 1845| mu1845_14(unknown) = ^CallSideEffect : ~m?
# 1845| v1845_15(void) = ^IndirectReadSideEffect[-1] : &:r1845_1, ~m?
# 1845| v1845_16(void) = ^BufferReadSideEffect[0] : &:r1845_12, ~m?
# 1845| mu1845_17(B) = ^IndirectMayWriteSideEffect[-1] : &:r1845_1
# 1845| mu1845_18(unknown) = ^BufferMayWriteSideEffect[0] : &:r1845_12
# 1845| r1845_19(glval<B>) = CopyValue : r1845_13
# 1846| v1846_1(void) = NoOp :
# 1843| v1843_4(void) = ReturnVoid :
# 1843| v1843_5(void) = AliasedUse : ~m?
# 1843| v1843_6(void) = ExitFunction :
perf-regression.cpp:
# 6| void Big::Big()
# 6| Block 0

View File

@@ -6,6 +6,7 @@ missingOperandType
duplicateChiOperand
sideEffectWithoutPrimary
instructionWithoutSuccessor
| file://:0:0:0:0 | InitializeIndirection: (unnamed parameter 0) | Instruction 'InitializeIndirection: (unnamed parameter 0)' has no successors in function '$@'. | ir.cpp:1834:11:1834:11 | block_assignment::A& block_assignment::A::operator=(block_assignment::A&&) | block_assignment::A& block_assignment::A::operator=(block_assignment::A&&) |
ambiguousSuccessors
unexplainedLoop
unnecessaryPhiInstruction

View File

@@ -6,6 +6,7 @@ missingOperandType
duplicateChiOperand
sideEffectWithoutPrimary
instructionWithoutSuccessor
| file://:0:0:0:0 | InitializeIndirection: (unnamed parameter 0) | Instruction 'InitializeIndirection: (unnamed parameter 0)' has no successors in function '$@'. | ir.cpp:1834:11:1834:11 | block_assignment::A& block_assignment::A::operator=(block_assignment::A&&) | block_assignment::A& block_assignment::A::operator=(block_assignment::A&&) |
ambiguousSuccessors
unexplainedLoop
unnecessaryPhiInstruction