mirror of
https://github.com/github/codeql.git
synced 2026-04-22 23:35:14 +02:00
C++: Add testcase with invalid IR from vacuous destructor call.
This commit is contained in:
@@ -17160,6 +17160,167 @@ ir.cpp:
|
||||
# 2190| getExpr(): [ConstructorCall] call to ClassWithDestructor
|
||||
# 2190| Type = [VoidType] void
|
||||
# 2190| ValueCategory = prvalue
|
||||
# 2194| [FunctionTemplateInstantiation,TopLevelFunction] ClassWithDestructor& vacuous_destructor_call::get<ClassWithDestructor>(ClassWithDestructor&)
|
||||
# 2194| <params>:
|
||||
# 2194| getParameter(0): [Parameter] t
|
||||
# 2194| Type = [LValueReferenceType] ClassWithDestructor &
|
||||
# 2194| getEntryPoint(): [BlockStmt] { ... }
|
||||
# 2194| getStmt(0): [ReturnStmt] return ...
|
||||
# 2194| getExpr(): [VariableAccess] t
|
||||
# 2194| Type = [LValueReferenceType] ClassWithDestructor &
|
||||
# 2194| ValueCategory = prvalue(load)
|
||||
# 2194| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to)
|
||||
# 2194| Type = [LValueReferenceType] ClassWithDestructor &
|
||||
# 2194| ValueCategory = prvalue
|
||||
# 2194| getExpr(): [ReferenceDereferenceExpr] (reference dereference)
|
||||
# 2194| Type = [Class] ClassWithDestructor
|
||||
# 2194| ValueCategory = lvalue
|
||||
# 2194| [TemplateFunction,TopLevelFunction] T& vacuous_destructor_call::get<T>(T&)
|
||||
# 2194| <params>:
|
||||
# 2194| getParameter(0): [Parameter] t
|
||||
# 2194| Type = [LValueReferenceType] T &
|
||||
# 2194| getEntryPoint(): [BlockStmt] { ... }
|
||||
# 2194| getStmt(0): [ReturnStmt] return ...
|
||||
# 2194| getExpr(): [VariableAccess] t
|
||||
# 2194| Type = [LValueReferenceType] T &
|
||||
# 2194| ValueCategory = prvalue(load)
|
||||
# 2194| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference)
|
||||
# 2194| Type = [TemplateParameter] T
|
||||
# 2194| ValueCategory = lvalue
|
||||
# 2194| [FunctionTemplateInstantiation,TopLevelFunction] int& vacuous_destructor_call::get<int>(int&)
|
||||
# 2194| <params>:
|
||||
# 2194| getParameter(0): [Parameter] t
|
||||
# 2194| Type = [LValueReferenceType] int &
|
||||
# 2194| getEntryPoint(): [BlockStmt] { ... }
|
||||
# 2194| getStmt(0): [ReturnStmt] return ...
|
||||
# 2194| getExpr(): [VariableAccess] t
|
||||
# 2194| Type = [LValueReferenceType] int &
|
||||
# 2194| ValueCategory = prvalue(load)
|
||||
# 2194| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to)
|
||||
# 2194| Type = [LValueReferenceType] int &
|
||||
# 2194| ValueCategory = prvalue
|
||||
# 2194| getExpr(): [ReferenceDereferenceExpr] (reference dereference)
|
||||
# 2194| Type = [IntType] int
|
||||
# 2194| ValueCategory = lvalue
|
||||
# 2197| [FunctionTemplateInstantiation,TopLevelFunction] void vacuous_destructor_call::call_destructor<ClassWithDestructor>(ClassWithDestructor&)
|
||||
# 2197| <params>:
|
||||
# 2197| getParameter(0): [Parameter] t
|
||||
# 2197| Type = [LValueReferenceType] ClassWithDestructor &
|
||||
# 2197| getEntryPoint(): [BlockStmt] { ... }
|
||||
# 2198| getStmt(0): [ExprStmt] ExprStmt
|
||||
# 2198| getExpr(): [DestructorCall] call to ~ClassWithDestructor
|
||||
# 2198| Type = [VoidType] void
|
||||
# 2198| ValueCategory = prvalue
|
||||
# 2198| getQualifier(): [FunctionCall] call to get
|
||||
# 2198| Type = [LValueReferenceType] ClassWithDestructor &
|
||||
# 2198| ValueCategory = prvalue
|
||||
# 2198| getArgument(0): [VariableAccess] t
|
||||
# 2198| Type = [LValueReferenceType] ClassWithDestructor &
|
||||
# 2198| ValueCategory = prvalue(load)
|
||||
# 2198| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to)
|
||||
# 2198| Type = [LValueReferenceType] ClassWithDestructor &
|
||||
# 2198| ValueCategory = prvalue
|
||||
# 2198| getExpr(): [ReferenceDereferenceExpr] (reference dereference)
|
||||
# 2198| Type = [Class] ClassWithDestructor
|
||||
# 2198| ValueCategory = lvalue
|
||||
# 2198| getQualifier().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference)
|
||||
# 2198| Type = [Class] ClassWithDestructor
|
||||
# 2198| ValueCategory = lvalue
|
||||
# 2199| getStmt(1): [ReturnStmt] return ...
|
||||
# 2197| [TemplateFunction,TopLevelFunction] void vacuous_destructor_call::call_destructor<T>(T&)
|
||||
# 2197| <params>:
|
||||
# 2197| getParameter(0): [Parameter] t
|
||||
# 2197| Type = [LValueReferenceType] T &
|
||||
# 2197| getEntryPoint(): [BlockStmt] { ... }
|
||||
# 2198| getStmt(0): [ExprStmt] ExprStmt
|
||||
# 2198| getExpr(): [ExprCall] call to expression
|
||||
# 2198| Type = [UnknownType] unknown
|
||||
# 2198| ValueCategory = prvalue
|
||||
# 2198| getExpr(): [Literal] Unknown literal
|
||||
# 2198| Type = [UnknownType] unknown
|
||||
# 2198| ValueCategory = prvalue
|
||||
# 2198| getChild(-1): [ExprCall] call to expression
|
||||
# 2198| Type = [UnknownType] unknown
|
||||
# 2198| ValueCategory = prvalue
|
||||
# 2198| getExpr(): [Literal] Unknown literal
|
||||
# 2198| Type = [UnknownType] unknown
|
||||
# 2198| ValueCategory = prvalue
|
||||
# 2198| getArgument(0): [VariableAccess] t
|
||||
# 2198| Type = [LValueReferenceType] T &
|
||||
# 2198| ValueCategory = prvalue(load)
|
||||
# 2198| getArgument(0).getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference)
|
||||
# 2198| Type = [TemplateParameter] T
|
||||
# 2198| ValueCategory = lvalue
|
||||
# 2199| getStmt(1): [ReturnStmt] return ...
|
||||
# 2197| [FunctionTemplateInstantiation,TopLevelFunction] void vacuous_destructor_call::call_destructor<int>(int&)
|
||||
# 2197| <params>:
|
||||
# 2197| getParameter(0): [Parameter] t
|
||||
# 2197| Type = [LValueReferenceType] int &
|
||||
# 2197| getEntryPoint(): [BlockStmt] { ... }
|
||||
# 2198| getStmt(0): [ExprStmt] ExprStmt
|
||||
# 2198| getExpr(): [VacuousDestructorCall] (vacuous destructor call)
|
||||
# 2198| Type = [VoidType] void
|
||||
# 2198| ValueCategory = prvalue
|
||||
# 2198| getChild(0): [FunctionCall] call to get
|
||||
# 2198| Type = [LValueReferenceType] int &
|
||||
# 2198| ValueCategory = prvalue
|
||||
# 2198| getArgument(0): [VariableAccess] t
|
||||
# 2198| Type = [LValueReferenceType] int &
|
||||
# 2198| ValueCategory = prvalue(load)
|
||||
# 2198| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to)
|
||||
# 2198| Type = [LValueReferenceType] int &
|
||||
# 2198| ValueCategory = prvalue
|
||||
# 2198| getExpr(): [ReferenceDereferenceExpr] (reference dereference)
|
||||
# 2198| Type = [IntType] int
|
||||
# 2198| ValueCategory = lvalue
|
||||
# 2198| getChild(0).getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference)
|
||||
# 2198| Type = [IntType] int
|
||||
# 2198| ValueCategory = lvalue
|
||||
# 2199| getStmt(1): [ReturnStmt] return ...
|
||||
# 2201| [TopLevelFunction] void vacuous_destructor_call::non_vacuous_destructor_call()
|
||||
# 2201| <params>:
|
||||
# 2201| getEntryPoint(): [BlockStmt] { ... }
|
||||
# 2202| getStmt(0): [DeclStmt] declaration
|
||||
# 2202| getDeclarationEntry(0): [VariableDeclarationEntry] definition of c
|
||||
# 2202| Type = [Class] ClassWithDestructor
|
||||
# 2202| getVariable().getInitializer(): [Initializer] initializer for c
|
||||
# 2202| getExpr(): [ConstructorCall] call to ClassWithDestructor
|
||||
# 2202| Type = [VoidType] void
|
||||
# 2202| ValueCategory = prvalue
|
||||
# 2203| getStmt(1): [ExprStmt] ExprStmt
|
||||
# 2203| getExpr(): [FunctionCall] call to call_destructor
|
||||
# 2203| Type = [VoidType] void
|
||||
# 2203| ValueCategory = prvalue
|
||||
# 2203| getArgument(0): [VariableAccess] c
|
||||
# 2203| Type = [Class] ClassWithDestructor
|
||||
# 2203| ValueCategory = lvalue
|
||||
# 2203| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to)
|
||||
# 2203| Type = [LValueReferenceType] ClassWithDestructor &
|
||||
# 2203| ValueCategory = prvalue
|
||||
# 2204| getStmt(2): [ReturnStmt] return ...
|
||||
# 2204| getImplicitDestructorCall(0): [DestructorCall] call to ~ClassWithDestructor
|
||||
# 2204| Type = [VoidType] void
|
||||
# 2204| ValueCategory = prvalue
|
||||
# 2204| getQualifier(): [VariableAccess] c
|
||||
# 2204| Type = [Class] ClassWithDestructor
|
||||
# 2204| ValueCategory = lvalue
|
||||
# 2206| [TopLevelFunction] void vacuous_destructor_call::vacuous_destructor_call()
|
||||
# 2206| <params>:
|
||||
# 2206| getEntryPoint(): [BlockStmt] { ... }
|
||||
# 2207| getStmt(0): [DeclStmt] declaration
|
||||
# 2207| getDeclarationEntry(0): [VariableDeclarationEntry] definition of i
|
||||
# 2207| Type = [IntType] int
|
||||
# 2208| getStmt(1): [ExprStmt] ExprStmt
|
||||
# 2208| getExpr(): [FunctionCall] call to call_destructor
|
||||
# 2208| Type = [VoidType] void
|
||||
# 2208| ValueCategory = prvalue
|
||||
# 2208| getArgument(0): [VariableAccess] i
|
||||
# 2208| Type = [IntType] int
|
||||
# 2208| ValueCategory = lvalue
|
||||
# 2208| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to)
|
||||
# 2208| Type = [LValueReferenceType] int &
|
||||
# 2208| ValueCategory = prvalue
|
||||
# 2209| getStmt(2): [ReturnStmt] return ...
|
||||
perf-regression.cpp:
|
||||
# 4| [CopyAssignmentOperator] Big& Big::operator=(Big const&)
|
||||
# 4| <params>:
|
||||
|
||||
@@ -13269,6 +13269,146 @@ ir.cpp:
|
||||
# 2190| v2190_11(void) = AliasedUse : ~m2190_9
|
||||
# 2190| v2190_12(void) = ExitFunction :
|
||||
|
||||
# 2194| ClassWithDestructor& vacuous_destructor_call::get<ClassWithDestructor>(ClassWithDestructor&)
|
||||
# 2194| Block 0
|
||||
# 2194| v2194_1(void) = EnterFunction :
|
||||
# 2194| m2194_2(unknown) = AliasedDefinition :
|
||||
# 2194| m2194_3(unknown) = InitializeNonLocal :
|
||||
# 2194| m2194_4(unknown) = Chi : total:m2194_2, partial:m2194_3
|
||||
# 2194| r2194_5(glval<ClassWithDestructor &>) = VariableAddress[t] :
|
||||
# 2194| m2194_6(ClassWithDestructor &) = InitializeParameter[t] : &:r2194_5
|
||||
# 2194| r2194_7(ClassWithDestructor &) = Load[t] : &:r2194_5, m2194_6
|
||||
# 2194| m2194_8(unknown) = InitializeIndirection[t] : &:r2194_7
|
||||
# 2194| r2194_9(glval<ClassWithDestructor &>) = VariableAddress[#return] :
|
||||
# 2194| r2194_10(glval<ClassWithDestructor &>) = VariableAddress[t] :
|
||||
# 2194| r2194_11(ClassWithDestructor &) = Load[t] : &:r2194_10, m2194_6
|
||||
# 2194| r2194_12(glval<ClassWithDestructor>) = CopyValue : r2194_11
|
||||
# 2194| r2194_13(ClassWithDestructor &) = CopyValue : r2194_12
|
||||
# 2194| m2194_14(ClassWithDestructor &) = Store[#return] : &:r2194_9, r2194_13
|
||||
# 2194| v2194_15(void) = ReturnIndirection[t] : &:r2194_7, m2194_8
|
||||
# 2194| r2194_16(glval<ClassWithDestructor &>) = VariableAddress[#return] :
|
||||
# 2194| v2194_17(void) = ReturnValue : &:r2194_16, m2194_14
|
||||
# 2194| v2194_18(void) = AliasedUse : m2194_3
|
||||
# 2194| v2194_19(void) = ExitFunction :
|
||||
|
||||
# 2194| int& vacuous_destructor_call::get<int>(int&)
|
||||
# 2194| Block 0
|
||||
# 2194| v2194_1(void) = EnterFunction :
|
||||
# 2194| m2194_2(unknown) = AliasedDefinition :
|
||||
# 2194| m2194_3(unknown) = InitializeNonLocal :
|
||||
# 2194| m2194_4(unknown) = Chi : total:m2194_2, partial:m2194_3
|
||||
# 2194| r2194_5(glval<int &>) = VariableAddress[t] :
|
||||
# 2194| m2194_6(int &) = InitializeParameter[t] : &:r2194_5
|
||||
# 2194| r2194_7(int &) = Load[t] : &:r2194_5, m2194_6
|
||||
# 2194| m2194_8(unknown) = InitializeIndirection[t] : &:r2194_7
|
||||
# 2194| r2194_9(glval<int &>) = VariableAddress[#return] :
|
||||
# 2194| r2194_10(glval<int &>) = VariableAddress[t] :
|
||||
# 2194| r2194_11(int &) = Load[t] : &:r2194_10, m2194_6
|
||||
# 2194| r2194_12(glval<int>) = CopyValue : r2194_11
|
||||
# 2194| r2194_13(int &) = CopyValue : r2194_12
|
||||
# 2194| m2194_14(int &) = Store[#return] : &:r2194_9, r2194_13
|
||||
# 2194| v2194_15(void) = ReturnIndirection[t] : &:r2194_7, m2194_8
|
||||
# 2194| r2194_16(glval<int &>) = VariableAddress[#return] :
|
||||
# 2194| v2194_17(void) = ReturnValue : &:r2194_16, m2194_14
|
||||
# 2194| v2194_18(void) = AliasedUse : m2194_3
|
||||
# 2194| v2194_19(void) = ExitFunction :
|
||||
|
||||
# 2197| void vacuous_destructor_call::call_destructor<ClassWithDestructor>(ClassWithDestructor&)
|
||||
# 2197| Block 0
|
||||
# 2197| v2197_1(void) = EnterFunction :
|
||||
# 2197| m2197_2(unknown) = AliasedDefinition :
|
||||
# 2197| m2197_3(unknown) = InitializeNonLocal :
|
||||
# 2197| m2197_4(unknown) = Chi : total:m2197_2, partial:m2197_3
|
||||
# 2197| r2197_5(glval<ClassWithDestructor &>) = VariableAddress[t] :
|
||||
# 2197| m2197_6(ClassWithDestructor &) = InitializeParameter[t] : &:r2197_5
|
||||
# 2197| r2197_7(ClassWithDestructor &) = Load[t] : &:r2197_5, m2197_6
|
||||
# 2197| m2197_8(unknown) = InitializeIndirection[t] : &:r2197_7
|
||||
# 2198| r2198_1(glval<unknown>) = FunctionAddress[get] :
|
||||
# 2198| r2198_2(glval<ClassWithDestructor &>) = VariableAddress[t] :
|
||||
# 2198| r2198_3(ClassWithDestructor &) = Load[t] : &:r2198_2, m2197_6
|
||||
# 2198| r2198_4(glval<ClassWithDestructor>) = CopyValue : r2198_3
|
||||
# 2198| r2198_5(ClassWithDestructor &) = CopyValue : r2198_4
|
||||
# 2198| r2198_6(ClassWithDestructor &) = Call[get] : func:r2198_1, 0:r2198_5
|
||||
# 2198| m2198_7(unknown) = ^CallSideEffect : ~m2197_4
|
||||
# 2198| m2198_8(unknown) = Chi : total:m2197_4, partial:m2198_7
|
||||
# 2198| v2198_9(void) = ^BufferReadSideEffect[0] : &:r2198_5, ~m2197_8
|
||||
# 2198| m2198_10(unknown) = ^BufferMayWriteSideEffect[0] : &:r2198_5
|
||||
# 2198| m2198_11(unknown) = Chi : total:m2197_8, partial:m2198_10
|
||||
# 2198| r2198_12(glval<ClassWithDestructor>) = CopyValue : r2198_6
|
||||
# 2198| r2198_13(glval<unknown>) = FunctionAddress[~ClassWithDestructor] :
|
||||
# 2198| v2198_14(void) = Call[~ClassWithDestructor] : func:r2198_13
|
||||
# 2198| m2198_15(unknown) = ^CallSideEffect : ~m2198_8
|
||||
# 2198| m2198_16(unknown) = Chi : total:m2198_8, partial:m2198_15
|
||||
# 2198| v2198_17(void) = ^IndirectReadSideEffect[-1] : &:r2198_12, ~m2198_11
|
||||
# 2198| m2198_18(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2198_12
|
||||
# 2198| m2198_19(unknown) = Chi : total:m2198_11, partial:m2198_18
|
||||
# 2199| v2199_1(void) = NoOp :
|
||||
# 2197| v2197_9(void) = ReturnIndirection[t] : &:r2197_7, m2198_19
|
||||
# 2197| v2197_10(void) = ReturnVoid :
|
||||
# 2197| v2197_11(void) = AliasedUse : ~m2198_16
|
||||
# 2197| v2197_12(void) = ExitFunction :
|
||||
|
||||
# 2197| void vacuous_destructor_call::call_destructor<int>(int&)
|
||||
# 2197| Block 0
|
||||
# 2197| v2197_1(void) = EnterFunction :
|
||||
# 2197| m2197_2(unknown) = AliasedDefinition :
|
||||
# 2197| m2197_3(unknown) = InitializeNonLocal :
|
||||
# 2197| m2197_4(unknown) = Chi : total:m2197_2, partial:m2197_3
|
||||
# 2197| r2197_5(glval<int &>) = VariableAddress[t] :
|
||||
# 2197| m2197_6(int &) = InitializeParameter[t] : &:r2197_5
|
||||
# 2197| r2197_7(int &) = Load[t] : &:r2197_5, m2197_6
|
||||
# 2197| m2197_8(unknown) = InitializeIndirection[t] : &:r2197_7
|
||||
|
||||
# 2201| void vacuous_destructor_call::non_vacuous_destructor_call()
|
||||
# 2201| Block 0
|
||||
# 2201| v2201_1(void) = EnterFunction :
|
||||
# 2201| m2201_2(unknown) = AliasedDefinition :
|
||||
# 2201| m2201_3(unknown) = InitializeNonLocal :
|
||||
# 2201| m2201_4(unknown) = Chi : total:m2201_2, partial:m2201_3
|
||||
# 2202| r2202_1(glval<ClassWithDestructor>) = VariableAddress[c] :
|
||||
# 2202| m2202_2(ClassWithDestructor) = Uninitialized[c] : &:r2202_1
|
||||
# 2202| r2202_3(glval<unknown>) = FunctionAddress[ClassWithDestructor] :
|
||||
# 2202| v2202_4(void) = Call[ClassWithDestructor] : func:r2202_3, this:r2202_1
|
||||
# 2202| m2202_5(unknown) = ^CallSideEffect : ~m2201_4
|
||||
# 2202| m2202_6(unknown) = Chi : total:m2201_4, partial:m2202_5
|
||||
# 2202| m2202_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2202_1
|
||||
# 2202| m2202_8(ClassWithDestructor) = Chi : total:m2202_2, partial:m2202_7
|
||||
# 2203| r2203_1(glval<unknown>) = FunctionAddress[call_destructor] :
|
||||
# 2203| r2203_2(glval<ClassWithDestructor>) = VariableAddress[c] :
|
||||
# 2203| r2203_3(ClassWithDestructor &) = CopyValue : r2203_2
|
||||
# 2203| v2203_4(void) = Call[call_destructor] : func:r2203_1, 0:r2203_3
|
||||
# 2203| m2203_5(unknown) = ^CallSideEffect : ~m2202_6
|
||||
# 2203| m2203_6(unknown) = Chi : total:m2202_6, partial:m2203_5
|
||||
# 2203| v2203_7(void) = ^BufferReadSideEffect[0] : &:r2203_3, ~m2202_8
|
||||
# 2203| m2203_8(unknown) = ^BufferMayWriteSideEffect[0] : &:r2203_3
|
||||
# 2203| m2203_9(ClassWithDestructor) = Chi : total:m2202_8, partial:m2203_8
|
||||
# 2204| v2204_1(void) = NoOp :
|
||||
# 2201| v2201_5(void) = ReturnVoid :
|
||||
# 2201| v2201_6(void) = AliasedUse : ~m2203_6
|
||||
# 2201| v2201_7(void) = ExitFunction :
|
||||
|
||||
# 2206| void vacuous_destructor_call::vacuous_destructor_call()
|
||||
# 2206| Block 0
|
||||
# 2206| v2206_1(void) = EnterFunction :
|
||||
# 2206| m2206_2(unknown) = AliasedDefinition :
|
||||
# 2206| m2206_3(unknown) = InitializeNonLocal :
|
||||
# 2206| m2206_4(unknown) = Chi : total:m2206_2, partial:m2206_3
|
||||
# 2207| r2207_1(glval<int>) = VariableAddress[i] :
|
||||
# 2207| m2207_2(int) = Uninitialized[i] : &:r2207_1
|
||||
# 2208| r2208_1(glval<unknown>) = FunctionAddress[call_destructor] :
|
||||
# 2208| r2208_2(glval<int>) = VariableAddress[i] :
|
||||
# 2208| r2208_3(int &) = CopyValue : r2208_2
|
||||
# 2208| v2208_4(void) = Call[call_destructor] : func:r2208_1, 0:r2208_3
|
||||
# 2208| m2208_5(unknown) = ^CallSideEffect : ~m2206_4
|
||||
# 2208| m2208_6(unknown) = Chi : total:m2206_4, partial:m2208_5
|
||||
# 2208| v2208_7(void) = ^BufferReadSideEffect[0] : &:r2208_3, ~m2207_2
|
||||
# 2208| m2208_8(unknown) = ^BufferMayWriteSideEffect[0] : &:r2208_3
|
||||
# 2208| m2208_9(int) = Chi : total:m2207_2, partial:m2208_8
|
||||
# 2209| v2209_1(void) = NoOp :
|
||||
# 2206| v2206_5(void) = ReturnVoid :
|
||||
# 2206| v2206_6(void) = AliasedUse : ~m2208_6
|
||||
# 2206| v2206_7(void) = ExitFunction :
|
||||
|
||||
perf-regression.cpp:
|
||||
# 6| void Big::Big()
|
||||
# 6| Block 0
|
||||
|
||||
@@ -6,6 +6,7 @@ missingOperandType
|
||||
duplicateChiOperand
|
||||
sideEffectWithoutPrimary
|
||||
instructionWithoutSuccessor
|
||||
| ir.cpp:2197:29:2197:29 | InitializeIndirection: t | Instruction 'InitializeIndirection: t' has no successors in function '$@'. | ir.cpp:2197:10:2197:10 | void vacuous_destructor_call::call_destructor<int>(int&) | void vacuous_destructor_call::call_destructor<int>(int&) |
|
||||
ambiguousSuccessors
|
||||
unexplainedLoop
|
||||
unnecessaryPhiInstruction
|
||||
|
||||
@@ -6,6 +6,7 @@ missingOperandType
|
||||
duplicateChiOperand
|
||||
sideEffectWithoutPrimary
|
||||
instructionWithoutSuccessor
|
||||
| ir.cpp:2197:29:2197:29 | InitializeIndirection: t | Instruction 'InitializeIndirection: t' has no successors in function '$@'. | ir.cpp:2197:10:2197:10 | void vacuous_destructor_call::call_destructor<int>(int&) | void vacuous_destructor_call::call_destructor<int>(int&) |
|
||||
ambiguousSuccessors
|
||||
unexplainedLoop
|
||||
unnecessaryPhiInstruction
|
||||
|
||||
@@ -2189,4 +2189,24 @@ void static_variable_with_destructor_3() {
|
||||
|
||||
static ClassWithDestructor global_class_with_destructor;
|
||||
|
||||
namespace vacuous_destructor_call {
|
||||
template<typename T>
|
||||
T& get(T& t) { return t; }
|
||||
|
||||
template<typename T>
|
||||
void call_destructor(T& t) {
|
||||
get(t).~T();
|
||||
}
|
||||
|
||||
void non_vacuous_destructor_call() {
|
||||
ClassWithDestructor c;
|
||||
call_destructor(c);
|
||||
}
|
||||
|
||||
void vacuous_destructor_call() {
|
||||
int i;
|
||||
call_destructor(i);
|
||||
}
|
||||
}
|
||||
|
||||
// semmle-extractor-options: -std=c++20 --clang
|
||||
|
||||
@@ -10796,6 +10796,117 @@
|
||||
| ir.cpp:2190:28:2190:55 | ChiTotal | total:m2190_7 |
|
||||
| ir.cpp:2190:28:2190:55 | SideEffect | ~m2190_2 |
|
||||
| ir.cpp:2190:28:2190:55 | SideEffect | ~m2190_9 |
|
||||
| ir.cpp:2194:8:2194:8 | Address | &:r2194_16 |
|
||||
| ir.cpp:2194:8:2194:8 | Address | &:r2194_16 |
|
||||
| ir.cpp:2194:8:2194:8 | ChiPartial | partial:m2194_3 |
|
||||
| ir.cpp:2194:8:2194:8 | ChiPartial | partial:m2194_3 |
|
||||
| ir.cpp:2194:8:2194:8 | ChiTotal | total:m2194_2 |
|
||||
| ir.cpp:2194:8:2194:8 | ChiTotal | total:m2194_2 |
|
||||
| ir.cpp:2194:8:2194:8 | Load | m2194_14 |
|
||||
| ir.cpp:2194:8:2194:8 | Load | m2194_14 |
|
||||
| ir.cpp:2194:8:2194:8 | SideEffect | m2194_3 |
|
||||
| ir.cpp:2194:8:2194:8 | SideEffect | m2194_3 |
|
||||
| ir.cpp:2194:15:2194:15 | Address | &:r2194_5 |
|
||||
| ir.cpp:2194:15:2194:15 | Address | &:r2194_5 |
|
||||
| ir.cpp:2194:15:2194:15 | Address | &:r2194_5 |
|
||||
| ir.cpp:2194:15:2194:15 | Address | &:r2194_5 |
|
||||
| ir.cpp:2194:15:2194:15 | Address | &:r2194_7 |
|
||||
| ir.cpp:2194:15:2194:15 | Address | &:r2194_7 |
|
||||
| ir.cpp:2194:15:2194:15 | Address | &:r2194_7 |
|
||||
| ir.cpp:2194:15:2194:15 | Address | &:r2194_7 |
|
||||
| ir.cpp:2194:15:2194:15 | Load | m2194_6 |
|
||||
| ir.cpp:2194:15:2194:15 | Load | m2194_6 |
|
||||
| ir.cpp:2194:15:2194:15 | SideEffect | m2194_8 |
|
||||
| ir.cpp:2194:15:2194:15 | SideEffect | m2194_8 |
|
||||
| ir.cpp:2194:20:2194:28 | Address | &:r2194_9 |
|
||||
| ir.cpp:2194:20:2194:28 | Address | &:r2194_9 |
|
||||
| ir.cpp:2194:27:2194:27 | Address | &:r2194_10 |
|
||||
| ir.cpp:2194:27:2194:27 | Address | &:r2194_10 |
|
||||
| ir.cpp:2194:27:2194:27 | Load | m2194_6 |
|
||||
| ir.cpp:2194:27:2194:27 | Load | m2194_6 |
|
||||
| ir.cpp:2194:27:2194:27 | StoreValue | r2194_13 |
|
||||
| ir.cpp:2194:27:2194:27 | StoreValue | r2194_13 |
|
||||
| ir.cpp:2194:27:2194:27 | Unary | r2194_11 |
|
||||
| ir.cpp:2194:27:2194:27 | Unary | r2194_11 |
|
||||
| ir.cpp:2194:27:2194:27 | Unary | r2194_12 |
|
||||
| ir.cpp:2194:27:2194:27 | Unary | r2194_12 |
|
||||
| ir.cpp:2197:10:2197:10 | ChiPartial | partial:m2197_3 |
|
||||
| ir.cpp:2197:10:2197:10 | ChiPartial | partial:m2197_3 |
|
||||
| ir.cpp:2197:10:2197:10 | ChiTotal | total:m2197_2 |
|
||||
| ir.cpp:2197:10:2197:10 | ChiTotal | total:m2197_2 |
|
||||
| ir.cpp:2197:10:2197:10 | SideEffect | ~m2198_16 |
|
||||
| ir.cpp:2197:29:2197:29 | Address | &:r2197_5 |
|
||||
| ir.cpp:2197:29:2197:29 | Address | &:r2197_5 |
|
||||
| ir.cpp:2197:29:2197:29 | Address | &:r2197_5 |
|
||||
| ir.cpp:2197:29:2197:29 | Address | &:r2197_5 |
|
||||
| ir.cpp:2197:29:2197:29 | Address | &:r2197_7 |
|
||||
| ir.cpp:2197:29:2197:29 | Address | &:r2197_7 |
|
||||
| ir.cpp:2197:29:2197:29 | Address | &:r2197_7 |
|
||||
| ir.cpp:2197:29:2197:29 | Load | m2197_6 |
|
||||
| ir.cpp:2197:29:2197:29 | Load | m2197_6 |
|
||||
| ir.cpp:2197:29:2197:29 | SideEffect | m2198_19 |
|
||||
| ir.cpp:2198:9:2198:11 | CallTarget | func:r2198_1 |
|
||||
| ir.cpp:2198:9:2198:11 | ChiPartial | partial:m2198_7 |
|
||||
| ir.cpp:2198:9:2198:11 | ChiTotal | total:m2197_4 |
|
||||
| ir.cpp:2198:9:2198:11 | SideEffect | ~m2197_4 |
|
||||
| ir.cpp:2198:9:2198:11 | Unary | r2198_6 |
|
||||
| ir.cpp:2198:12:2198:15 | Address | &:r2198_12 |
|
||||
| ir.cpp:2198:12:2198:15 | Address | &:r2198_12 |
|
||||
| ir.cpp:2198:12:2198:15 | ChiPartial | partial:m2198_18 |
|
||||
| ir.cpp:2198:12:2198:15 | ChiTotal | total:m2198_11 |
|
||||
| ir.cpp:2198:12:2198:15 | SideEffect | ~m2198_11 |
|
||||
| ir.cpp:2198:13:2198:13 | Address | &:r2198_2 |
|
||||
| ir.cpp:2198:13:2198:13 | Address | &:r2198_5 |
|
||||
| ir.cpp:2198:13:2198:13 | Address | &:r2198_5 |
|
||||
| ir.cpp:2198:13:2198:13 | Arg(0) | 0:r2198_5 |
|
||||
| ir.cpp:2198:13:2198:13 | ChiPartial | partial:m2198_10 |
|
||||
| ir.cpp:2198:13:2198:13 | ChiTotal | total:m2197_8 |
|
||||
| ir.cpp:2198:13:2198:13 | Load | m2197_6 |
|
||||
| ir.cpp:2198:13:2198:13 | SideEffect | ~m2197_8 |
|
||||
| ir.cpp:2198:13:2198:13 | Unary | r2198_3 |
|
||||
| ir.cpp:2198:13:2198:13 | Unary | r2198_4 |
|
||||
| ir.cpp:2198:16:2198:17 | CallTarget | func:r2198_13 |
|
||||
| ir.cpp:2198:16:2198:17 | ChiPartial | partial:m2198_15 |
|
||||
| ir.cpp:2198:16:2198:17 | ChiTotal | total:m2198_8 |
|
||||
| ir.cpp:2198:16:2198:17 | SideEffect | ~m2198_8 |
|
||||
| ir.cpp:2201:10:2201:36 | ChiPartial | partial:m2201_3 |
|
||||
| ir.cpp:2201:10:2201:36 | ChiTotal | total:m2201_2 |
|
||||
| ir.cpp:2201:10:2201:36 | SideEffect | ~m2203_6 |
|
||||
| ir.cpp:2202:29:2202:29 | Address | &:r2202_1 |
|
||||
| ir.cpp:2202:29:2202:29 | Address | &:r2202_1 |
|
||||
| ir.cpp:2202:29:2202:29 | Arg(this) | this:r2202_1 |
|
||||
| ir.cpp:2202:29:2202:29 | CallTarget | func:r2202_3 |
|
||||
| ir.cpp:2202:29:2202:29 | ChiPartial | partial:m2202_5 |
|
||||
| ir.cpp:2202:29:2202:29 | ChiPartial | partial:m2202_7 |
|
||||
| ir.cpp:2202:29:2202:29 | ChiTotal | total:m2201_4 |
|
||||
| ir.cpp:2202:29:2202:29 | ChiTotal | total:m2202_2 |
|
||||
| ir.cpp:2202:29:2202:29 | SideEffect | ~m2201_4 |
|
||||
| ir.cpp:2203:9:2203:23 | CallTarget | func:r2203_1 |
|
||||
| ir.cpp:2203:9:2203:23 | ChiPartial | partial:m2203_5 |
|
||||
| ir.cpp:2203:9:2203:23 | ChiTotal | total:m2202_6 |
|
||||
| ir.cpp:2203:9:2203:23 | SideEffect | ~m2202_6 |
|
||||
| ir.cpp:2203:25:2203:25 | Address | &:r2203_3 |
|
||||
| ir.cpp:2203:25:2203:25 | Address | &:r2203_3 |
|
||||
| ir.cpp:2203:25:2203:25 | Arg(0) | 0:r2203_3 |
|
||||
| ir.cpp:2203:25:2203:25 | ChiPartial | partial:m2203_8 |
|
||||
| ir.cpp:2203:25:2203:25 | ChiTotal | total:m2202_8 |
|
||||
| ir.cpp:2203:25:2203:25 | SideEffect | ~m2202_8 |
|
||||
| ir.cpp:2203:25:2203:25 | Unary | r2203_2 |
|
||||
| ir.cpp:2206:10:2206:32 | ChiPartial | partial:m2206_3 |
|
||||
| ir.cpp:2206:10:2206:32 | ChiTotal | total:m2206_2 |
|
||||
| ir.cpp:2206:10:2206:32 | SideEffect | ~m2208_6 |
|
||||
| ir.cpp:2207:13:2207:13 | Address | &:r2207_1 |
|
||||
| ir.cpp:2208:9:2208:23 | CallTarget | func:r2208_1 |
|
||||
| ir.cpp:2208:9:2208:23 | ChiPartial | partial:m2208_5 |
|
||||
| ir.cpp:2208:9:2208:23 | ChiTotal | total:m2206_4 |
|
||||
| ir.cpp:2208:9:2208:23 | SideEffect | ~m2206_4 |
|
||||
| ir.cpp:2208:25:2208:25 | Address | &:r2208_3 |
|
||||
| ir.cpp:2208:25:2208:25 | Address | &:r2208_3 |
|
||||
| ir.cpp:2208:25:2208:25 | Arg(0) | 0:r2208_3 |
|
||||
| ir.cpp:2208:25:2208:25 | ChiPartial | partial:m2208_8 |
|
||||
| ir.cpp:2208:25:2208:25 | ChiTotal | total:m2207_2 |
|
||||
| ir.cpp:2208:25:2208:25 | SideEffect | ~m2207_2 |
|
||||
| ir.cpp:2208:25:2208:25 | Unary | r2208_2 |
|
||||
| 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 |
|
||||
|
||||
@@ -6,6 +6,8 @@ missingOperandType
|
||||
duplicateChiOperand
|
||||
sideEffectWithoutPrimary
|
||||
instructionWithoutSuccessor
|
||||
| ir.cpp:2197:29:2197:29 | InitializeIndirection: t | Instruction 'InitializeIndirection: t' has no successors in function '$@'. | ir.cpp:2197:10:2197:10 | void vacuous_destructor_call::call_destructor<int>(int&) | void vacuous_destructor_call::call_destructor<int>(int&) |
|
||||
| ir.cpp:2198:12:2198:15 | CopyValue: (reference dereference) | Instruction 'CopyValue: (reference dereference)' has no successors in function '$@'. | ir.cpp:2197:10:2197:10 | void vacuous_destructor_call::call_destructor<int>(int&) | void vacuous_destructor_call::call_destructor<int>(int&) |
|
||||
ambiguousSuccessors
|
||||
unexplainedLoop
|
||||
unnecessaryPhiInstruction
|
||||
@@ -21,6 +23,7 @@ lostReachability
|
||||
backEdgeCountMismatch
|
||||
useNotDominatedByDefinition
|
||||
| ir.cpp:1488:8:1488:8 | Unary | Operand 'Unary' is not dominated by its definition in function '$@'. | ir.cpp:1488:8:1488:8 | void StructuredBindingDataMemberStruct::StructuredBindingDataMemberStruct() | void StructuredBindingDataMemberStruct::StructuredBindingDataMemberStruct() |
|
||||
| ir.cpp:2197:29:2197:29 | Address | Operand 'Address' is not dominated by its definition in function '$@'. | ir.cpp:2197:10:2197:10 | void vacuous_destructor_call::call_destructor<int>(int&) | void vacuous_destructor_call::call_destructor<int>(int&) |
|
||||
| try_except.c:13:13:13:13 | Left | Operand 'Left' is not dominated by its definition in function '$@'. | try_except.c:6:6:6:6 | void f() | void f() |
|
||||
| try_except.c:13:13:13:13 | Left | Operand 'Left' is not dominated by its definition in function '$@'. | try_except.c:6:6:6:6 | void f() | void f() |
|
||||
| try_except.c:39:15:39:15 | Left | Operand 'Left' is not dominated by its definition in function '$@'. | try_except.c:32:6:32:6 | void h(int) | void h(int) |
|
||||
|
||||
@@ -12366,6 +12366,149 @@ ir.cpp:
|
||||
# 2190| v2190_9(void) = AliasedUse : ~m?
|
||||
# 2190| v2190_10(void) = ExitFunction :
|
||||
|
||||
# 2194| ClassWithDestructor& vacuous_destructor_call::get<ClassWithDestructor>(ClassWithDestructor&)
|
||||
# 2194| Block 0
|
||||
# 2194| v2194_1(void) = EnterFunction :
|
||||
# 2194| mu2194_2(unknown) = AliasedDefinition :
|
||||
# 2194| mu2194_3(unknown) = InitializeNonLocal :
|
||||
# 2194| r2194_4(glval<ClassWithDestructor &>) = VariableAddress[t] :
|
||||
# 2194| mu2194_5(ClassWithDestructor &) = InitializeParameter[t] : &:r2194_4
|
||||
# 2194| r2194_6(ClassWithDestructor &) = Load[t] : &:r2194_4, ~m?
|
||||
# 2194| mu2194_7(unknown) = InitializeIndirection[t] : &:r2194_6
|
||||
# 2194| r2194_8(glval<ClassWithDestructor &>) = VariableAddress[#return] :
|
||||
# 2194| r2194_9(glval<ClassWithDestructor &>) = VariableAddress[t] :
|
||||
# 2194| r2194_10(ClassWithDestructor &) = Load[t] : &:r2194_9, ~m?
|
||||
# 2194| r2194_11(glval<ClassWithDestructor>) = CopyValue : r2194_10
|
||||
# 2194| r2194_12(ClassWithDestructor &) = CopyValue : r2194_11
|
||||
# 2194| mu2194_13(ClassWithDestructor &) = Store[#return] : &:r2194_8, r2194_12
|
||||
# 2194| v2194_14(void) = ReturnIndirection[t] : &:r2194_6, ~m?
|
||||
# 2194| r2194_15(glval<ClassWithDestructor &>) = VariableAddress[#return] :
|
||||
# 2194| v2194_16(void) = ReturnValue : &:r2194_15, ~m?
|
||||
# 2194| v2194_17(void) = AliasedUse : ~m?
|
||||
# 2194| v2194_18(void) = ExitFunction :
|
||||
|
||||
# 2194| int& vacuous_destructor_call::get<int>(int&)
|
||||
# 2194| Block 0
|
||||
# 2194| v2194_1(void) = EnterFunction :
|
||||
# 2194| mu2194_2(unknown) = AliasedDefinition :
|
||||
# 2194| mu2194_3(unknown) = InitializeNonLocal :
|
||||
# 2194| r2194_4(glval<int &>) = VariableAddress[t] :
|
||||
# 2194| mu2194_5(int &) = InitializeParameter[t] : &:r2194_4
|
||||
# 2194| r2194_6(int &) = Load[t] : &:r2194_4, ~m?
|
||||
# 2194| mu2194_7(unknown) = InitializeIndirection[t] : &:r2194_6
|
||||
# 2194| r2194_8(glval<int &>) = VariableAddress[#return] :
|
||||
# 2194| r2194_9(glval<int &>) = VariableAddress[t] :
|
||||
# 2194| r2194_10(int &) = Load[t] : &:r2194_9, ~m?
|
||||
# 2194| r2194_11(glval<int>) = CopyValue : r2194_10
|
||||
# 2194| r2194_12(int &) = CopyValue : r2194_11
|
||||
# 2194| mu2194_13(int &) = Store[#return] : &:r2194_8, r2194_12
|
||||
# 2194| v2194_14(void) = ReturnIndirection[t] : &:r2194_6, ~m?
|
||||
# 2194| r2194_15(glval<int &>) = VariableAddress[#return] :
|
||||
# 2194| v2194_16(void) = ReturnValue : &:r2194_15, ~m?
|
||||
# 2194| v2194_17(void) = AliasedUse : ~m?
|
||||
# 2194| v2194_18(void) = ExitFunction :
|
||||
|
||||
# 2197| void vacuous_destructor_call::call_destructor<ClassWithDestructor>(ClassWithDestructor&)
|
||||
# 2197| Block 0
|
||||
# 2197| v2197_1(void) = EnterFunction :
|
||||
# 2197| mu2197_2(unknown) = AliasedDefinition :
|
||||
# 2197| mu2197_3(unknown) = InitializeNonLocal :
|
||||
# 2197| r2197_4(glval<ClassWithDestructor &>) = VariableAddress[t] :
|
||||
# 2197| mu2197_5(ClassWithDestructor &) = InitializeParameter[t] : &:r2197_4
|
||||
# 2197| r2197_6(ClassWithDestructor &) = Load[t] : &:r2197_4, ~m?
|
||||
# 2197| mu2197_7(unknown) = InitializeIndirection[t] : &:r2197_6
|
||||
# 2198| r2198_1(glval<unknown>) = FunctionAddress[get] :
|
||||
# 2198| r2198_2(glval<ClassWithDestructor &>) = VariableAddress[t] :
|
||||
# 2198| r2198_3(ClassWithDestructor &) = Load[t] : &:r2198_2, ~m?
|
||||
# 2198| r2198_4(glval<ClassWithDestructor>) = CopyValue : r2198_3
|
||||
# 2198| r2198_5(ClassWithDestructor &) = CopyValue : r2198_4
|
||||
# 2198| r2198_6(ClassWithDestructor &) = Call[get] : func:r2198_1, 0:r2198_5
|
||||
# 2198| mu2198_7(unknown) = ^CallSideEffect : ~m?
|
||||
# 2198| v2198_8(void) = ^BufferReadSideEffect[0] : &:r2198_5, ~m?
|
||||
# 2198| mu2198_9(unknown) = ^BufferMayWriteSideEffect[0] : &:r2198_5
|
||||
# 2198| r2198_10(glval<ClassWithDestructor>) = CopyValue : r2198_6
|
||||
# 2198| r2198_11(glval<unknown>) = FunctionAddress[~ClassWithDestructor] :
|
||||
# 2198| v2198_12(void) = Call[~ClassWithDestructor] : func:r2198_11
|
||||
# 2198| mu2198_13(unknown) = ^CallSideEffect : ~m?
|
||||
# 2198| v2198_14(void) = ^IndirectReadSideEffect[-1] : &:r2198_10, ~m?
|
||||
# 2198| mu2198_15(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2198_10
|
||||
# 2199| v2199_1(void) = NoOp :
|
||||
# 2197| v2197_8(void) = ReturnIndirection[t] : &:r2197_6, ~m?
|
||||
# 2197| v2197_9(void) = ReturnVoid :
|
||||
# 2197| v2197_10(void) = AliasedUse : ~m?
|
||||
# 2197| v2197_11(void) = ExitFunction :
|
||||
|
||||
# 2197| void vacuous_destructor_call::call_destructor<int>(int&)
|
||||
# 2197| Block 0
|
||||
# 2197| v2197_1(void) = EnterFunction :
|
||||
# 2197| mu2197_2(unknown) = AliasedDefinition :
|
||||
# 2197| mu2197_3(unknown) = InitializeNonLocal :
|
||||
# 2197| r2197_4(glval<int &>) = VariableAddress[t] :
|
||||
# 2197| mu2197_5(int &) = InitializeParameter[t] : &:r2197_4
|
||||
# 2197| r2197_6(int &) = Load[t] : &:r2197_4, ~m?
|
||||
# 2197| mu2197_7(unknown) = InitializeIndirection[t] : &:r2197_6
|
||||
|
||||
# 2198| Block 1
|
||||
# 2198| r2198_1(glval<unknown>) = FunctionAddress[get] :
|
||||
# 2198| r2198_2(glval<int &>) = VariableAddress[t] :
|
||||
# 2198| r2198_3(int &) = Load[t] : &:r2198_2, ~m?
|
||||
# 2198| r2198_4(glval<int>) = CopyValue : r2198_3
|
||||
# 2198| r2198_5(int &) = CopyValue : r2198_4
|
||||
# 2198| r2198_6(int &) = Call[get] : func:r2198_1, 0:r2198_5
|
||||
# 2198| mu2198_7(unknown) = ^CallSideEffect : ~m?
|
||||
# 2198| v2198_8(void) = ^BufferReadSideEffect[0] : &:r2198_5, ~m?
|
||||
# 2198| mu2198_9(unknown) = ^BufferMayWriteSideEffect[0] : &:r2198_5
|
||||
# 2198| r2198_10(glval<int>) = CopyValue : r2198_6
|
||||
|
||||
# 2199| Block 2
|
||||
# 2199| v2199_1(void) = NoOp :
|
||||
# 2197| v2197_8(void) = ReturnIndirection[t] : &:r2197_6, ~m?
|
||||
# 2197| v2197_9(void) = ReturnVoid :
|
||||
# 2197| v2197_10(void) = AliasedUse : ~m?
|
||||
# 2197| v2197_11(void) = ExitFunction :
|
||||
|
||||
# 2201| void vacuous_destructor_call::non_vacuous_destructor_call()
|
||||
# 2201| Block 0
|
||||
# 2201| v2201_1(void) = EnterFunction :
|
||||
# 2201| mu2201_2(unknown) = AliasedDefinition :
|
||||
# 2201| mu2201_3(unknown) = InitializeNonLocal :
|
||||
# 2202| r2202_1(glval<ClassWithDestructor>) = VariableAddress[c] :
|
||||
# 2202| mu2202_2(ClassWithDestructor) = Uninitialized[c] : &:r2202_1
|
||||
# 2202| r2202_3(glval<unknown>) = FunctionAddress[ClassWithDestructor] :
|
||||
# 2202| v2202_4(void) = Call[ClassWithDestructor] : func:r2202_3, this:r2202_1
|
||||
# 2202| mu2202_5(unknown) = ^CallSideEffect : ~m?
|
||||
# 2202| mu2202_6(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2202_1
|
||||
# 2203| r2203_1(glval<unknown>) = FunctionAddress[call_destructor] :
|
||||
# 2203| r2203_2(glval<ClassWithDestructor>) = VariableAddress[c] :
|
||||
# 2203| r2203_3(ClassWithDestructor &) = CopyValue : r2203_2
|
||||
# 2203| v2203_4(void) = Call[call_destructor] : func:r2203_1, 0:r2203_3
|
||||
# 2203| mu2203_5(unknown) = ^CallSideEffect : ~m?
|
||||
# 2203| v2203_6(void) = ^BufferReadSideEffect[0] : &:r2203_3, ~m?
|
||||
# 2203| mu2203_7(unknown) = ^BufferMayWriteSideEffect[0] : &:r2203_3
|
||||
# 2204| v2204_1(void) = NoOp :
|
||||
# 2201| v2201_4(void) = ReturnVoid :
|
||||
# 2201| v2201_5(void) = AliasedUse : ~m?
|
||||
# 2201| v2201_6(void) = ExitFunction :
|
||||
|
||||
# 2206| void vacuous_destructor_call::vacuous_destructor_call()
|
||||
# 2206| Block 0
|
||||
# 2206| v2206_1(void) = EnterFunction :
|
||||
# 2206| mu2206_2(unknown) = AliasedDefinition :
|
||||
# 2206| mu2206_3(unknown) = InitializeNonLocal :
|
||||
# 2207| r2207_1(glval<int>) = VariableAddress[i] :
|
||||
# 2207| mu2207_2(int) = Uninitialized[i] : &:r2207_1
|
||||
# 2208| r2208_1(glval<unknown>) = FunctionAddress[call_destructor] :
|
||||
# 2208| r2208_2(glval<int>) = VariableAddress[i] :
|
||||
# 2208| r2208_3(int &) = CopyValue : r2208_2
|
||||
# 2208| v2208_4(void) = Call[call_destructor] : func:r2208_1, 0:r2208_3
|
||||
# 2208| mu2208_5(unknown) = ^CallSideEffect : ~m?
|
||||
# 2208| v2208_6(void) = ^BufferReadSideEffect[0] : &:r2208_3, ~m?
|
||||
# 2208| mu2208_7(unknown) = ^BufferMayWriteSideEffect[0] : &:r2208_3
|
||||
# 2209| v2209_1(void) = NoOp :
|
||||
# 2206| v2206_4(void) = ReturnVoid :
|
||||
# 2206| v2206_5(void) = AliasedUse : ~m?
|
||||
# 2206| v2206_6(void) = ExitFunction :
|
||||
|
||||
perf-regression.cpp:
|
||||
# 6| void Big::Big()
|
||||
# 6| Block 0
|
||||
|
||||
@@ -6,6 +6,7 @@ missingOperandType
|
||||
duplicateChiOperand
|
||||
sideEffectWithoutPrimary
|
||||
instructionWithoutSuccessor
|
||||
| ir.cpp:2197:29:2197:29 | InitializeIndirection: t | Instruction 'InitializeIndirection: t' has no successors in function '$@'. | ir.cpp:2197:10:2197:10 | void vacuous_destructor_call::call_destructor<int>(int&) | void vacuous_destructor_call::call_destructor<int>(int&) |
|
||||
ambiguousSuccessors
|
||||
unexplainedLoop
|
||||
unnecessaryPhiInstruction
|
||||
|
||||
@@ -6,6 +6,7 @@ missingOperandType
|
||||
duplicateChiOperand
|
||||
sideEffectWithoutPrimary
|
||||
instructionWithoutSuccessor
|
||||
| ir.cpp:2197:29:2197:29 | InitializeIndirection: t | Instruction 'InitializeIndirection: t' has no successors in function '$@'. | ir.cpp:2197:10:2197:10 | void vacuous_destructor_call::call_destructor<int>(int&) | void vacuous_destructor_call::call_destructor<int>(int&) |
|
||||
ambiguousSuccessors
|
||||
unexplainedLoop
|
||||
unnecessaryPhiInstruction
|
||||
|
||||
Reference in New Issue
Block a user