mirror of
https://github.com/github/codeql.git
synced 2026-04-26 17:25:19 +02:00
Merge branch 'main' into ir-for-vacuous-destructor-calls
This commit is contained in:
@@ -4316,8 +4316,6 @@ ir.cpp:
|
||||
# 365| ValueCategory = prvalue
|
||||
# 361| getStmt(2): [LabelStmt] label ...:
|
||||
# 367| getStmt(1): [ReturnStmt] return ...
|
||||
# 369| [TopLevelFunction] void VoidFunc()
|
||||
# 369| <params>:
|
||||
# 370| [TopLevelFunction] int Add(int, int)
|
||||
# 370| <params>:
|
||||
# 370| getParameter(0): [Parameter] x
|
||||
@@ -5553,6 +5551,8 @@ ir.cpp:
|
||||
# 605| Type = [RValueReferenceType] String &&
|
||||
# 607| [ConstMemberFunction] char const* String::c_str() const
|
||||
# 607| <params>:
|
||||
# 608| [MemberFunction] char String::pop_back()
|
||||
# 608| <params>:
|
||||
# 613| [TopLevelFunction] String ReturnObject()
|
||||
# 613| <params>:
|
||||
# 615| [TopLevelFunction] void DeclareObject()
|
||||
@@ -9386,6 +9386,10 @@ ir.cpp:
|
||||
# 1059| <params>:
|
||||
#-----| getParameter(0): [Parameter] (unnamed parameter 0)
|
||||
#-----| Type = [LValueReferenceType] const vector<ClassWithDestructor> &
|
||||
# 1059| [CopyAssignmentOperator] vector<String>& vector<String>::operator=(vector<String> const&)
|
||||
# 1059| <params>:
|
||||
#-----| getParameter(0): [Parameter] (unnamed parameter 0)
|
||||
#-----| Type = [LValueReferenceType] const vector<String> &
|
||||
# 1059| [CopyAssignmentOperator] vector<int>& vector<int>::operator=(vector<int> const&)
|
||||
# 1059| <params>:
|
||||
#-----| getParameter(0): [Parameter] (unnamed parameter 0)
|
||||
@@ -9394,6 +9398,10 @@ ir.cpp:
|
||||
# 1059| <params>:
|
||||
#-----| getParameter(0): [Parameter] (unnamed parameter 0)
|
||||
#-----| Type = [LValueReferenceType] const vector<ClassWithDestructor> &
|
||||
# 1059| [CopyConstructor] void vector<String>::vector(vector<String> const&)
|
||||
# 1059| <params>:
|
||||
#-----| getParameter(0): [Parameter] (unnamed parameter 0)
|
||||
#-----| Type = [LValueReferenceType] const vector<String> &
|
||||
# 1059| [CopyConstructor] void vector<int>::vector(vector<int> const&)
|
||||
# 1059| <params>:
|
||||
#-----| getParameter(0): [Parameter] (unnamed parameter 0)
|
||||
@@ -9406,6 +9414,14 @@ ir.cpp:
|
||||
# 1060| <params>:
|
||||
#-----| getParameter(0): [Parameter] (unnamed parameter 0)
|
||||
#-----| Type = [RValueReferenceType] iterator &&
|
||||
# 1060| [CopyAssignmentOperator] vector<String>::iterator& vector<String>::iterator::operator=(vector<String>::iterator const public&)
|
||||
# 1060| <params>:
|
||||
#-----| getParameter(0): [Parameter] (unnamed parameter 0)
|
||||
#-----| Type = [LValueReferenceType] const iterator &
|
||||
# 1060| [MoveAssignmentOperator] vector<String>::iterator& vector<String>::iterator::operator=(vector<String>::iterator&&)
|
||||
# 1060| <params>:
|
||||
#-----| getParameter(0): [Parameter] (unnamed parameter 0)
|
||||
#-----| Type = [RValueReferenceType] iterator &&
|
||||
# 1060| [CopyAssignmentOperator] vector<int>::iterator& vector<int>::iterator::operator=(vector<int>::iterator const public&)
|
||||
# 1060| <params>:
|
||||
#-----| getParameter(0): [Parameter] (unnamed parameter 0)
|
||||
@@ -9416,12 +9432,16 @@ ir.cpp:
|
||||
#-----| Type = [RValueReferenceType] iterator &&
|
||||
# 1062| [MemberFunction] vector<ClassWithDestructor>::iterator& vector<ClassWithDestructor>::iterator::operator++()
|
||||
# 1062| <params>:
|
||||
# 1062| [MemberFunction] vector<String>::iterator& vector<String>::iterator::operator++()
|
||||
# 1062| <params>:
|
||||
# 1062| [MemberFunction] vector<T>::iterator& vector<T>::iterator::operator++()
|
||||
# 1062| <params>:
|
||||
# 1062| [MemberFunction] vector<int>::iterator& vector<int>::iterator::operator++()
|
||||
# 1062| <params>:
|
||||
# 1063| [ConstMemberFunction] ClassWithDestructor& vector<ClassWithDestructor>::iterator::operator*() const
|
||||
# 1063| <params>:
|
||||
# 1063| [ConstMemberFunction] String& vector<String>::iterator::operator*() const
|
||||
# 1063| <params>:
|
||||
# 1063| [ConstMemberFunction] T& vector<T>::iterator::operator*() const
|
||||
# 1063| <params>:
|
||||
# 1063| [ConstMemberFunction] int& vector<int>::iterator::operator*() const
|
||||
@@ -9430,6 +9450,10 @@ ir.cpp:
|
||||
# 1065| <params>:
|
||||
# 1065| getParameter(0): [Parameter] right
|
||||
# 1065| Type = [NestedStruct] iterator
|
||||
# 1065| [ConstMemberFunction] bool vector<String>::iterator::operator!=(vector<String>::iterator) const
|
||||
# 1065| <params>:
|
||||
# 1065| getParameter(0): [Parameter] right
|
||||
# 1065| Type = [NestedStruct] iterator
|
||||
# 1065| [ConstMemberFunction] bool vector<T>::iterator::operator!=(vector<T>::iterator) const
|
||||
# 1065| <params>:
|
||||
# 1065| getParameter(0): [Parameter] right
|
||||
@@ -9442,6 +9466,10 @@ ir.cpp:
|
||||
# 1068| <params>:
|
||||
# 1068| getParameter(0): [Parameter] (unnamed parameter 0)
|
||||
# 1068| Type = [Class] ClassWithDestructor
|
||||
# 1068| [Constructor] void vector<String>::vector(String)
|
||||
# 1068| <params>:
|
||||
# 1068| getParameter(0): [Parameter] (unnamed parameter 0)
|
||||
# 1068| Type = [Struct] String
|
||||
# 1068| [Constructor] void vector<T>::vector(T)
|
||||
# 1068| <params>:
|
||||
# 1068| getParameter(0): [Parameter] (unnamed parameter 0)
|
||||
@@ -9458,12 +9486,16 @@ ir.cpp:
|
||||
# 1069| <params>:
|
||||
# 1070| [ConstMemberFunction] vector<ClassWithDestructor>::iterator vector<ClassWithDestructor>::begin() const
|
||||
# 1070| <params>:
|
||||
# 1070| [ConstMemberFunction] vector<String>::iterator vector<String>::begin() const
|
||||
# 1070| <params>:
|
||||
# 1070| [ConstMemberFunction] vector<T>::iterator vector<T>::begin() const
|
||||
# 1070| <params>:
|
||||
# 1070| [ConstMemberFunction] vector<int>::iterator vector<int>::begin() const
|
||||
# 1070| <params>:
|
||||
# 1071| [ConstMemberFunction] vector<ClassWithDestructor>::iterator vector<ClassWithDestructor>::end() const
|
||||
# 1071| <params>:
|
||||
# 1071| [ConstMemberFunction] vector<String>::iterator vector<String>::end() const
|
||||
# 1071| <params>:
|
||||
# 1071| [ConstMemberFunction] vector<T>::iterator vector<T>::end() const
|
||||
# 1071| <params>:
|
||||
# 1071| [ConstMemberFunction] vector<int>::iterator vector<int>::end() const
|
||||
@@ -17321,6 +17353,729 @@ ir.cpp:
|
||||
# 2208| Type = [LValueReferenceType] int &
|
||||
# 2208| ValueCategory = prvalue
|
||||
# 2209| getStmt(2): [ReturnStmt] return ...
|
||||
# 2212| [TopLevelFunction] void TryCatchDestructors(bool)
|
||||
# 2212| <params>:
|
||||
# 2212| getParameter(0): [Parameter] b
|
||||
# 2212| Type = [BoolType] bool
|
||||
# 2212| getEntryPoint(): [BlockStmt] { ... }
|
||||
# 2213| getStmt(0): [TryStmt] try { ... }
|
||||
# 2213| getStmt(): [BlockStmt] { ... }
|
||||
# 2214| getStmt(0): [DeclStmt] declaration
|
||||
# 2214| getDeclarationEntry(0): [VariableDeclarationEntry] definition of s
|
||||
# 2214| Type = [Struct] String
|
||||
# 2214| getVariable().getInitializer(): [Initializer] initializer for s
|
||||
# 2214| getExpr(): [ConstructorCall] call to String
|
||||
# 2214| Type = [VoidType] void
|
||||
# 2214| ValueCategory = prvalue
|
||||
# 2215| getStmt(1): [IfStmt] if (...) ...
|
||||
# 2215| getCondition(): [VariableAccess] b
|
||||
# 2215| Type = [BoolType] bool
|
||||
# 2215| ValueCategory = prvalue(load)
|
||||
# 2215| getThen(): [BlockStmt] { ... }
|
||||
# 2216| getStmt(0): [ExprStmt] ExprStmt
|
||||
# 2216| getExpr(): [ThrowExpr] throw ...
|
||||
# 2216| Type = [PointerType] const char *
|
||||
# 2216| ValueCategory = prvalue
|
||||
# 2216| getExpr(): string literal
|
||||
# 2216| Type = [ArrayType] const char[15]
|
||||
# 2216| Value = [StringLiteral] "string literal"
|
||||
# 2216| ValueCategory = lvalue
|
||||
# 2219| getImplicitDestructorCall(0): [DestructorCall] call to ~String
|
||||
# 2219| Type = [VoidType] void
|
||||
# 2219| ValueCategory = prvalue
|
||||
# 2219| getQualifier(): [VariableAccess] s
|
||||
# 2219| Type = [Struct] String
|
||||
# 2219| ValueCategory = lvalue
|
||||
# 2216| getExpr().getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion
|
||||
# 2216| Type = [PointerType] const char *
|
||||
# 2216| ValueCategory = prvalue
|
||||
# 2218| getStmt(2): [DeclStmt] declaration
|
||||
# 2218| getDeclarationEntry(0): [VariableDeclarationEntry] definition of s2
|
||||
# 2218| Type = [Struct] String
|
||||
# 2218| getVariable().getInitializer(): [Initializer] initializer for s2
|
||||
# 2218| getExpr(): [ConstructorCall] call to String
|
||||
# 2218| Type = [VoidType] void
|
||||
# 2218| ValueCategory = prvalue
|
||||
# 2219| getImplicitDestructorCall(0): [DestructorCall] call to ~String
|
||||
# 2219| Type = [VoidType] void
|
||||
# 2219| ValueCategory = prvalue
|
||||
# 2219| getQualifier(): [VariableAccess] s2
|
||||
# 2219| Type = [Struct] String
|
||||
# 2219| ValueCategory = lvalue
|
||||
# 2219| getImplicitDestructorCall(1): [DestructorCall] call to ~String
|
||||
# 2219| Type = [VoidType] void
|
||||
# 2219| ValueCategory = prvalue
|
||||
# 2219| getQualifier(): [VariableAccess] s
|
||||
# 2219| Type = [Struct] String
|
||||
# 2219| ValueCategory = lvalue
|
||||
# 2220| getChild(1): [Handler] <handler>
|
||||
# 2220| getBlock(): [CatchBlock] { ... }
|
||||
# 2221| getStmt(0): [ExprStmt] ExprStmt
|
||||
# 2221| getExpr(): [ThrowExpr] throw ...
|
||||
# 2221| Type = [Struct] String
|
||||
# 2221| ValueCategory = prvalue
|
||||
# 2221| getExpr(): [ConstructorCall] call to String
|
||||
# 2221| Type = [VoidType] void
|
||||
# 2221| ValueCategory = prvalue
|
||||
# 2221| getArgument(0): [VariableAccess] s
|
||||
# 2221| Type = [PointerType] const char *
|
||||
# 2221| ValueCategory = prvalue(load)
|
||||
# 2223| getChild(2): [Handler] <handler>
|
||||
# 2223| getBlock(): [CatchBlock] { ... }
|
||||
# 2225| getChild(3): [Handler] <handler>
|
||||
# 2225| getBlock(): [CatchAnyBlock] { ... }
|
||||
# 2226| getStmt(0): [ExprStmt] ExprStmt
|
||||
# 2226| getExpr(): [ReThrowExpr] re-throw exception
|
||||
# 2226| Type = [VoidType] void
|
||||
# 2226| ValueCategory = prvalue
|
||||
# 2228| getStmt(1): [ReturnStmt] return ...
|
||||
# 2230| [TopLevelFunction] void IfDestructors(bool)
|
||||
# 2230| <params>:
|
||||
# 2230| getParameter(0): [Parameter] b
|
||||
# 2230| Type = [BoolType] bool
|
||||
# 2230| getEntryPoint(): [BlockStmt] { ... }
|
||||
# 2231| getStmt(0): [DeclStmt] declaration
|
||||
# 2231| getDeclarationEntry(0): [VariableDeclarationEntry] definition of s1
|
||||
# 2231| Type = [Struct] String
|
||||
# 2231| getVariable().getInitializer(): [Initializer] initializer for s1
|
||||
# 2231| getExpr(): [ConstructorCall] call to String
|
||||
# 2231| Type = [VoidType] void
|
||||
# 2231| ValueCategory = prvalue
|
||||
# 2232| getStmt(1): [IfStmt] if (...) ...
|
||||
# 2232| getCondition(): [VariableAccess] b
|
||||
# 2232| Type = [BoolType] bool
|
||||
# 2232| ValueCategory = prvalue(load)
|
||||
# 2232| getThen(): [BlockStmt] { ... }
|
||||
# 2233| getStmt(0): [DeclStmt] declaration
|
||||
# 2233| getDeclarationEntry(0): [VariableDeclarationEntry] definition of s2
|
||||
# 2233| Type = [Struct] String
|
||||
# 2233| getVariable().getInitializer(): [Initializer] initializer for s2
|
||||
# 2233| getExpr(): [ConstructorCall] call to String
|
||||
# 2233| Type = [VoidType] void
|
||||
# 2233| ValueCategory = prvalue
|
||||
# 2234| getImplicitDestructorCall(0): [DestructorCall] call to ~String
|
||||
# 2234| Type = [VoidType] void
|
||||
# 2234| ValueCategory = prvalue
|
||||
# 2234| getQualifier(): [VariableAccess] s2
|
||||
# 2234| Type = [Struct] String
|
||||
# 2234| ValueCategory = lvalue
|
||||
# 2234| getElse(): [BlockStmt] { ... }
|
||||
# 2235| getStmt(0): [DeclStmt] declaration
|
||||
# 2235| getDeclarationEntry(0): [VariableDeclarationEntry] definition of s3
|
||||
# 2235| Type = [Struct] String
|
||||
# 2235| getVariable().getInitializer(): [Initializer] initializer for s3
|
||||
# 2235| getExpr(): [ConstructorCall] call to String
|
||||
# 2235| Type = [VoidType] void
|
||||
# 2235| ValueCategory = prvalue
|
||||
# 2236| getImplicitDestructorCall(0): [DestructorCall] call to ~String
|
||||
# 2236| Type = [VoidType] void
|
||||
# 2236| ValueCategory = prvalue
|
||||
# 2236| getQualifier(): [VariableAccess] s3
|
||||
# 2236| Type = [Struct] String
|
||||
# 2236| ValueCategory = lvalue
|
||||
# 2237| getStmt(2): [DeclStmt] declaration
|
||||
# 2237| getDeclarationEntry(0): [VariableDeclarationEntry] definition of s4
|
||||
# 2237| Type = [Struct] String
|
||||
# 2237| getVariable().getInitializer(): [Initializer] initializer for s4
|
||||
# 2237| getExpr(): [ConstructorCall] call to String
|
||||
# 2237| Type = [VoidType] void
|
||||
# 2237| ValueCategory = prvalue
|
||||
# 2238| getStmt(3): [ReturnStmt] return ...
|
||||
# 2238| getImplicitDestructorCall(0): [DestructorCall] call to ~String
|
||||
# 2238| Type = [VoidType] void
|
||||
# 2238| ValueCategory = prvalue
|
||||
# 2238| getQualifier(): [VariableAccess] s4
|
||||
# 2238| Type = [Struct] String
|
||||
# 2238| ValueCategory = lvalue
|
||||
# 2238| getImplicitDestructorCall(1): [DestructorCall] call to ~String
|
||||
# 2238| Type = [VoidType] void
|
||||
# 2238| ValueCategory = prvalue
|
||||
# 2238| getQualifier(): [VariableAccess] s1
|
||||
# 2238| Type = [Struct] String
|
||||
# 2238| ValueCategory = lvalue
|
||||
# 2240| [TopLevelFunction] void ForDestructors()
|
||||
# 2240| <params>:
|
||||
# 2240| getEntryPoint(): [BlockStmt] { ... }
|
||||
# 2241| getStmt(0): [DeclStmt] declaration
|
||||
# 2241| getDeclarationEntry(0): [VariableDeclarationEntry] definition of c
|
||||
# 2241| Type = [PlainCharType] char
|
||||
# 2241| getVariable().getInitializer(): [Initializer] initializer for c
|
||||
# 2241| getExpr(): [CharLiteral] 97
|
||||
# 2241| Type = [PlainCharType] char
|
||||
# 2241| Value = [CharLiteral] 97
|
||||
# 2241| ValueCategory = prvalue
|
||||
# 2242| getStmt(1): [ForStmt] for(...;...;...) ...
|
||||
# 2242| getInitialization(): [DeclStmt] declaration
|
||||
# 2242| getDeclarationEntry(0): [VariableDeclarationEntry] definition of s
|
||||
# 2242| Type = [Struct] String
|
||||
# 2242| getVariable().getInitializer(): [Initializer] initializer for s
|
||||
# 2242| getExpr(): [ConstructorCall] call to String
|
||||
# 2242| Type = [VoidType] void
|
||||
# 2242| ValueCategory = prvalue
|
||||
# 2242| getArgument(0): hello
|
||||
# 2242| Type = [ArrayType] const char[6]
|
||||
# 2242| Value = [StringLiteral] "hello"
|
||||
# 2242| ValueCategory = lvalue
|
||||
# 2242| getArgument(0).getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion
|
||||
# 2242| Type = [PointerType] const char *
|
||||
# 2242| ValueCategory = prvalue
|
||||
# 2242| getCondition(): [NEExpr] ... != ...
|
||||
# 2242| Type = [BoolType] bool
|
||||
# 2242| ValueCategory = prvalue
|
||||
# 2242| getLeftOperand(): [VariableAccess] c
|
||||
# 2242| Type = [PlainCharType] char
|
||||
# 2242| ValueCategory = prvalue(load)
|
||||
# 2242| getRightOperand(): [Literal] 0
|
||||
# 2242| Type = [IntType] int
|
||||
# 2242| Value = [Literal] 0
|
||||
# 2242| ValueCategory = prvalue
|
||||
# 2242| getLeftOperand().getFullyConverted(): [CStyleCast] (int)...
|
||||
# 2242| Conversion = [IntegralConversion] integral conversion
|
||||
# 2242| Type = [IntType] int
|
||||
# 2242| ValueCategory = prvalue
|
||||
# 2242| getUpdate(): [AssignExpr] ... = ...
|
||||
# 2242| Type = [PlainCharType] char
|
||||
# 2242| ValueCategory = lvalue
|
||||
# 2242| getLValue(): [VariableAccess] c
|
||||
# 2242| Type = [PlainCharType] char
|
||||
# 2242| ValueCategory = lvalue
|
||||
# 2242| getRValue(): [FunctionCall] call to pop_back
|
||||
# 2242| Type = [PlainCharType] char
|
||||
# 2242| ValueCategory = prvalue
|
||||
# 2242| getQualifier(): [VariableAccess] s
|
||||
# 2242| Type = [Struct] String
|
||||
# 2242| ValueCategory = lvalue
|
||||
# 2242| getStmt(): [BlockStmt] { ... }
|
||||
# 2243| getStmt(0): [DeclStmt] declaration
|
||||
# 2243| getDeclarationEntry(0): [VariableDeclarationEntry] definition of s2
|
||||
# 2243| Type = [Struct] String
|
||||
# 2243| getVariable().getInitializer(): [Initializer] initializer for s2
|
||||
# 2243| getExpr(): [ConstructorCall] call to String
|
||||
# 2243| Type = [VoidType] void
|
||||
# 2243| ValueCategory = prvalue
|
||||
# 2244| getImplicitDestructorCall(0): [DestructorCall] call to ~String
|
||||
# 2244| Type = [VoidType] void
|
||||
# 2244| ValueCategory = prvalue
|
||||
# 2244| getQualifier(): [VariableAccess] s2
|
||||
# 2244| Type = [Struct] String
|
||||
# 2244| ValueCategory = lvalue
|
||||
# 2242| getImplicitDestructorCall(0): [DestructorCall] call to ~String
|
||||
# 2242| Type = [VoidType] void
|
||||
# 2242| ValueCategory = prvalue
|
||||
# 2242| getQualifier(): [VariableAccess] s
|
||||
# 2242| Type = [Struct] String
|
||||
# 2242| ValueCategory = lvalue
|
||||
# 2246| getStmt(2): [RangeBasedForStmt] for(...:...) ...
|
||||
# 2246| getChild(1): [DeclStmt] declaration
|
||||
# 2246| getDeclarationEntry(0): [VariableDeclarationEntry] declaration of (__range)
|
||||
# 2246| Type = [RValueReferenceType] vector<String> &&
|
||||
#-----| getVariable().getInitializer(): [Initializer] initializer for (__range)
|
||||
# 2246| getExpr(): [ConstructorCall] call to vector
|
||||
# 2246| Type = [VoidType] void
|
||||
# 2246| ValueCategory = prvalue
|
||||
# 2246| getArgument(0): [ConstructorCall] call to String
|
||||
# 2246| Type = [VoidType] void
|
||||
# 2246| ValueCategory = prvalue
|
||||
# 2246| getArgument(0): hello
|
||||
# 2246| Type = [ArrayType] const char[6]
|
||||
# 2246| Value = [StringLiteral] "hello"
|
||||
# 2246| ValueCategory = lvalue
|
||||
# 2246| getArgument(0).getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion
|
||||
# 2246| Type = [PointerType] const char *
|
||||
# 2246| ValueCategory = prvalue
|
||||
# 2246| getArgument(0).getFullyConverted(): [TemporaryObjectExpr] temporary object
|
||||
# 2246| Type = [Struct] String
|
||||
# 2246| ValueCategory = lvalue
|
||||
# 2246| getExpr().getFullyConverted(): [ReferenceToExpr] (reference to)
|
||||
# 2246| Type = [LValueReferenceType] vector<String> &
|
||||
# 2246| ValueCategory = prvalue
|
||||
# 2246| getExpr(): [TemporaryObjectExpr] temporary object
|
||||
# 2246| Type = [ClassTemplateInstantiation,Struct] vector<String>
|
||||
# 2246| ValueCategory = xvalue
|
||||
# 2246| getBeginEndDeclaration(): [DeclStmt] declaration
|
||||
# 2246| getDeclarationEntry(0): [VariableDeclarationEntry] declaration of (__begin)
|
||||
# 2246| Type = [NestedStruct] iterator
|
||||
#-----| getVariable().getInitializer(): [Initializer] initializer for (__begin)
|
||||
# 2246| getExpr(): [FunctionCall] call to begin
|
||||
# 2246| Type = [NestedStruct] iterator
|
||||
# 2246| ValueCategory = prvalue
|
||||
# 2246| getQualifier(): [VariableAccess] (__range)
|
||||
# 2246| Type = [RValueReferenceType] vector<String> &&
|
||||
# 2246| ValueCategory = prvalue(load)
|
||||
#-----| getQualifier().getFullyConverted(): [CStyleCast] (const vector<String>)...
|
||||
#-----| Conversion = [GlvalueConversion] glvalue conversion
|
||||
#-----| Type = [SpecifiedType] const vector<String>
|
||||
#-----| ValueCategory = lvalue
|
||||
#-----| getExpr(): [ReferenceDereferenceExpr] (reference dereference)
|
||||
#-----| Type = [ClassTemplateInstantiation,Struct] vector<String>
|
||||
#-----| ValueCategory = lvalue
|
||||
# 2246| getDeclarationEntry(1): [VariableDeclarationEntry] declaration of (__end)
|
||||
# 2246| Type = [NestedStruct] iterator
|
||||
#-----| getVariable().getInitializer(): [Initializer] initializer for (__end)
|
||||
# 2246| getExpr(): [FunctionCall] call to end
|
||||
# 2246| Type = [NestedStruct] iterator
|
||||
# 2246| ValueCategory = prvalue
|
||||
# 2246| getQualifier(): [VariableAccess] (__range)
|
||||
# 2246| Type = [RValueReferenceType] vector<String> &&
|
||||
# 2246| ValueCategory = prvalue(load)
|
||||
#-----| getQualifier().getFullyConverted(): [CStyleCast] (const vector<String>)...
|
||||
#-----| Conversion = [GlvalueConversion] glvalue conversion
|
||||
#-----| Type = [SpecifiedType] const vector<String>
|
||||
#-----| ValueCategory = lvalue
|
||||
#-----| getExpr(): [ReferenceDereferenceExpr] (reference dereference)
|
||||
#-----| Type = [ClassTemplateInstantiation,Struct] vector<String>
|
||||
#-----| ValueCategory = lvalue
|
||||
# 2246| getCondition(): [FunctionCall] call to operator!=
|
||||
# 2246| Type = [BoolType] bool
|
||||
# 2246| ValueCategory = prvalue
|
||||
# 2246| getQualifier(): [VariableAccess] (__begin)
|
||||
# 2246| Type = [NestedStruct] iterator
|
||||
# 2246| ValueCategory = lvalue
|
||||
# 2246| getArgument(0): [VariableAccess] (__end)
|
||||
# 2246| Type = [NestedStruct] iterator
|
||||
# 2246| ValueCategory = prvalue(load)
|
||||
#-----| getQualifier().getFullyConverted(): [CStyleCast] (const iterator)...
|
||||
#-----| Conversion = [GlvalueConversion] glvalue conversion
|
||||
#-----| Type = [SpecifiedType] const iterator
|
||||
#-----| ValueCategory = lvalue
|
||||
# 2246| getUpdate(): [FunctionCall] call to operator++
|
||||
# 2246| Type = [LValueReferenceType] iterator &
|
||||
# 2246| ValueCategory = prvalue
|
||||
# 2246| getQualifier(): [VariableAccess] (__begin)
|
||||
# 2246| Type = [NestedStruct] iterator
|
||||
# 2246| ValueCategory = lvalue
|
||||
# 2246| getChild(5): [DeclStmt] declaration
|
||||
# 2246| getDeclarationEntry(0): [VariableDeclarationEntry] definition of s
|
||||
# 2246| Type = [Struct] String
|
||||
# 2246| getVariable().getInitializer(): [Initializer] initializer for s
|
||||
# 2246| getExpr(): [ConstructorCall] call to String
|
||||
# 2246| Type = [VoidType] void
|
||||
# 2246| ValueCategory = prvalue
|
||||
# 2246| getArgument(0): [OverloadedPointerDereferenceExpr] call to operator*
|
||||
# 2246| Type = [LValueReferenceType] String &
|
||||
# 2246| ValueCategory = prvalue
|
||||
# 2246| getQualifier(): [VariableAccess] (__begin)
|
||||
# 2246| Type = [NestedStruct] iterator
|
||||
# 2246| ValueCategory = lvalue
|
||||
#-----| getQualifier().getFullyConverted(): [CStyleCast] (const iterator)...
|
||||
#-----| Conversion = [GlvalueConversion] glvalue conversion
|
||||
#-----| Type = [SpecifiedType] const iterator
|
||||
#-----| ValueCategory = lvalue
|
||||
# 2246| getArgument(0).getFullyConverted(): [ReferenceToExpr] (reference to)
|
||||
# 2246| Type = [LValueReferenceType] const String &
|
||||
# 2246| ValueCategory = prvalue
|
||||
# 2246| getExpr(): [CStyleCast] (const String)...
|
||||
# 2246| Conversion = [GlvalueConversion] glvalue conversion
|
||||
# 2246| Type = [SpecifiedType] const String
|
||||
# 2246| ValueCategory = lvalue
|
||||
# 2246| getExpr(): [ReferenceDereferenceExpr] (reference dereference)
|
||||
# 2246| Type = [Struct] String
|
||||
# 2246| ValueCategory = lvalue
|
||||
# 2246| getStmt(): [BlockStmt] { ... }
|
||||
# 2247| getStmt(0): [DeclStmt] declaration
|
||||
# 2247| getDeclarationEntry(0): [VariableDeclarationEntry] definition of s2
|
||||
# 2247| Type = [Struct] String
|
||||
# 2247| getVariable().getInitializer(): [Initializer] initializer for s2
|
||||
# 2247| getExpr(): [ConstructorCall] call to String
|
||||
# 2247| Type = [VoidType] void
|
||||
# 2247| ValueCategory = prvalue
|
||||
# 2248| getImplicitDestructorCall(0): [DestructorCall] call to ~String
|
||||
# 2248| Type = [VoidType] void
|
||||
# 2248| ValueCategory = prvalue
|
||||
# 2248| getQualifier(): [VariableAccess] s2
|
||||
# 2248| Type = [Struct] String
|
||||
# 2248| ValueCategory = lvalue
|
||||
# 2246| getImplicitDestructorCall(1): [DestructorCall] call to ~String
|
||||
# 2246| Type = [VoidType] void
|
||||
# 2246| ValueCategory = prvalue
|
||||
# 2246| getQualifier(): [VariableAccess] s
|
||||
# 2246| Type = [Struct] String
|
||||
# 2246| ValueCategory = lvalue
|
||||
# 2246| getUpdate().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference)
|
||||
# 2246| Type = [NestedStruct] iterator
|
||||
# 2246| ValueCategory = lvalue
|
||||
# 2250| getStmt(3): [ForStmt] for(...;...;...) ...
|
||||
# 2250| getInitialization(): [DeclStmt] declaration
|
||||
# 2250| getDeclarationEntry(0): [VariableDeclarationEntry] definition of s
|
||||
# 2250| Type = [Struct] String
|
||||
# 2250| getVariable().getInitializer(): [Initializer] initializer for s
|
||||
# 2250| getExpr(): [ConstructorCall] call to String
|
||||
# 2250| Type = [VoidType] void
|
||||
# 2250| ValueCategory = prvalue
|
||||
# 2250| getArgument(0): hello
|
||||
# 2250| Type = [ArrayType] const char[6]
|
||||
# 2250| Value = [StringLiteral] "hello"
|
||||
# 2250| ValueCategory = lvalue
|
||||
# 2250| getArgument(0).getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion
|
||||
# 2250| Type = [PointerType] const char *
|
||||
# 2250| ValueCategory = prvalue
|
||||
# 2250| getDeclarationEntry(1): [VariableDeclarationEntry] definition of s2
|
||||
# 2250| Type = [Struct] String
|
||||
# 2250| getVariable().getInitializer(): [Initializer] initializer for s2
|
||||
# 2250| getExpr(): [ConstructorCall] call to String
|
||||
# 2250| Type = [VoidType] void
|
||||
# 2250| ValueCategory = prvalue
|
||||
# 2250| getArgument(0): world
|
||||
# 2250| Type = [ArrayType] const char[6]
|
||||
# 2250| Value = [StringLiteral] "world"
|
||||
# 2250| ValueCategory = lvalue
|
||||
# 2250| getArgument(0).getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion
|
||||
# 2250| Type = [PointerType] const char *
|
||||
# 2250| ValueCategory = prvalue
|
||||
# 2250| getCondition(): [NEExpr] ... != ...
|
||||
# 2250| Type = [BoolType] bool
|
||||
# 2250| ValueCategory = prvalue
|
||||
# 2250| getLeftOperand(): [VariableAccess] c
|
||||
# 2250| Type = [PlainCharType] char
|
||||
# 2250| ValueCategory = prvalue(load)
|
||||
# 2250| getRightOperand(): [Literal] 0
|
||||
# 2250| Type = [IntType] int
|
||||
# 2250| Value = [Literal] 0
|
||||
# 2250| ValueCategory = prvalue
|
||||
# 2250| getLeftOperand().getFullyConverted(): [CStyleCast] (int)...
|
||||
# 2250| Conversion = [IntegralConversion] integral conversion
|
||||
# 2250| Type = [IntType] int
|
||||
# 2250| ValueCategory = prvalue
|
||||
# 2250| getUpdate(): [AssignExpr] ... = ...
|
||||
# 2250| Type = [PlainCharType] char
|
||||
# 2250| ValueCategory = lvalue
|
||||
# 2250| getLValue(): [VariableAccess] c
|
||||
# 2250| Type = [PlainCharType] char
|
||||
# 2250| ValueCategory = lvalue
|
||||
# 2250| getRValue(): [FunctionCall] call to pop_back
|
||||
# 2250| Type = [PlainCharType] char
|
||||
# 2250| ValueCategory = prvalue
|
||||
# 2250| getQualifier(): [VariableAccess] s
|
||||
# 2250| Type = [Struct] String
|
||||
# 2250| ValueCategory = lvalue
|
||||
# 2250| getStmt(): [BlockStmt] { ... }
|
||||
# 2251| getStmt(0): [ExprStmt] ExprStmt
|
||||
# 2251| getExpr(): [AssignExpr] ... = ...
|
||||
# 2251| Type = [PlainCharType] char
|
||||
# 2251| ValueCategory = lvalue
|
||||
# 2251| getLValue(): [VariableAccess] c
|
||||
# 2251| Type = [PlainCharType] char
|
||||
# 2251| ValueCategory = lvalue
|
||||
# 2251| getRValue(): [Literal] 0
|
||||
# 2251| Type = [IntType] int
|
||||
# 2251| Value = [Literal] 0
|
||||
# 2251| ValueCategory = prvalue
|
||||
# 2251| getRValue().getFullyConverted(): [CStyleCast] (char)...
|
||||
# 2251| Conversion = [IntegralConversion] integral conversion
|
||||
# 2251| Type = [PlainCharType] char
|
||||
# 2251| Value = [CStyleCast] 0
|
||||
# 2251| ValueCategory = prvalue
|
||||
# 2250| getImplicitDestructorCall(0): [DestructorCall] call to ~String
|
||||
# 2250| Type = [VoidType] void
|
||||
# 2250| ValueCategory = prvalue
|
||||
# 2250| getQualifier(): [VariableAccess] s2
|
||||
# 2250| Type = [Struct] String
|
||||
# 2250| ValueCategory = lvalue
|
||||
# 2250| getImplicitDestructorCall(1): [DestructorCall] call to ~String
|
||||
# 2250| Type = [VoidType] void
|
||||
# 2250| ValueCategory = prvalue
|
||||
# 2250| getQualifier(): [VariableAccess] s
|
||||
# 2250| Type = [Struct] String
|
||||
# 2250| ValueCategory = lvalue
|
||||
# 2253| getStmt(4): [ReturnStmt] return ...
|
||||
# 2255| [TopLevelFunction] void IfDestructors2(bool)
|
||||
# 2255| <params>:
|
||||
# 2255| getParameter(0): [Parameter] b
|
||||
# 2255| Type = [BoolType] bool
|
||||
# 2255| getEntryPoint(): [BlockStmt] { ... }
|
||||
# 2256| getStmt(0): [IfStmt] if (...) ...
|
||||
# 2256| getInitialization(): [DeclStmt] declaration
|
||||
# 2256| getDeclarationEntry(0): [VariableDeclarationEntry] definition of s
|
||||
# 2256| Type = [Struct] String
|
||||
# 2256| getVariable().getInitializer(): [Initializer] initializer for s
|
||||
# 2256| getExpr(): [ConstructorCall] call to String
|
||||
# 2256| Type = [VoidType] void
|
||||
# 2256| ValueCategory = prvalue
|
||||
# 2256| getArgument(0): hello
|
||||
# 2256| Type = [ArrayType] const char[6]
|
||||
# 2256| Value = [StringLiteral] "hello"
|
||||
# 2256| ValueCategory = lvalue
|
||||
# 2256| getArgument(0).getFullyConverted(): [ArrayToPointerConversion] array to pointer conversion
|
||||
# 2256| Type = [PointerType] const char *
|
||||
# 2256| ValueCategory = prvalue
|
||||
# 2256| getCondition(): [VariableAccess] b
|
||||
# 2256| Type = [BoolType] bool
|
||||
# 2256| ValueCategory = prvalue(load)
|
||||
# 2256| getThen(): [BlockStmt] { ... }
|
||||
# 2257| getStmt(0): [DeclStmt] declaration
|
||||
# 2257| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x
|
||||
# 2257| Type = [IntType] int
|
||||
# 2257| getVariable().getInitializer(): [Initializer] initializer for x
|
||||
# 2257| getExpr(): [Literal] 0
|
||||
# 2257| Type = [IntType] int
|
||||
# 2257| Value = [Literal] 0
|
||||
# 2257| ValueCategory = prvalue
|
||||
# 2258| getElse(): [BlockStmt] { ... }
|
||||
# 2259| getStmt(0): [DeclStmt] declaration
|
||||
# 2259| getDeclarationEntry(0): [VariableDeclarationEntry] definition of y
|
||||
# 2259| Type = [IntType] int
|
||||
# 2259| getVariable().getInitializer(): [Initializer] initializer for y
|
||||
# 2259| getExpr(): [Literal] 0
|
||||
# 2259| Type = [IntType] int
|
||||
# 2259| Value = [Literal] 0
|
||||
# 2259| ValueCategory = prvalue
|
||||
# 2260| getImplicitDestructorCall(0): [DestructorCall] call to ~String
|
||||
# 2260| Type = [VoidType] void
|
||||
# 2260| ValueCategory = prvalue
|
||||
# 2260| getQualifier(): [VariableAccess] s
|
||||
# 2260| Type = [Struct] String
|
||||
# 2260| ValueCategory = lvalue
|
||||
# 2261| getStmt(1): [ReturnStmt] return ...
|
||||
# 2263| [CopyAssignmentOperator] Bool& Bool::operator=(Bool const&)
|
||||
# 2263| <params>:
|
||||
#-----| getParameter(0): [Parameter] (unnamed parameter 0)
|
||||
#-----| Type = [LValueReferenceType] const Bool &
|
||||
# 2263| [CopyConstructor] void Bool::Bool(Bool const&)
|
||||
# 2263| <params>:
|
||||
#-----| getParameter(0): [Parameter] (unnamed parameter 0)
|
||||
#-----| Type = [LValueReferenceType] const Bool &
|
||||
# 2265| [Constructor] void Bool::Bool(bool)
|
||||
# 2265| <params>:
|
||||
# 2265| getParameter(0): [Parameter] b_
|
||||
# 2265| Type = [BoolType] bool
|
||||
# 2266| [ConversionOperator] bool Bool::operator bool()
|
||||
# 2266| <params>:
|
||||
# 2267| [Destructor] void Bool::~Bool()
|
||||
# 2267| <params>:
|
||||
# 2270| [TopLevelFunction] void IfDestructors3(bool)
|
||||
# 2270| <params>:
|
||||
# 2270| getParameter(0): [Parameter] b
|
||||
# 2270| Type = [BoolType] bool
|
||||
# 2270| getEntryPoint(): [BlockStmt] { ... }
|
||||
# 2271| getStmt(0): [IfStmt] if (...) ...
|
||||
# 2271| getCondition(): [ConditionDeclExpr] (condition decl)
|
||||
# 2271| Type = [BoolType] bool
|
||||
# 2271| ValueCategory = prvalue
|
||||
# 2271| getChild(0): [FunctionCall] call to operator bool
|
||||
# 2271| Type = [BoolType] bool
|
||||
# 2271| ValueCategory = prvalue
|
||||
# 2271| getQualifier(): [VariableAccess] B
|
||||
# 2271| Type = [Class] Bool
|
||||
# 2271| ValueCategory = prvalue(load)
|
||||
# 2271| getThen(): [BlockStmt] { ... }
|
||||
# 2272| getStmt(0): [DeclStmt] declaration
|
||||
# 2272| getDeclarationEntry(0): [VariableDeclarationEntry] definition of s1
|
||||
# 2272| Type = [Struct] String
|
||||
# 2272| getVariable().getInitializer(): [Initializer] initializer for s1
|
||||
# 2272| getExpr(): [ConstructorCall] call to String
|
||||
# 2272| Type = [VoidType] void
|
||||
# 2272| ValueCategory = prvalue
|
||||
# 2273| getImplicitDestructorCall(0): [DestructorCall] call to ~String
|
||||
# 2273| Type = [VoidType] void
|
||||
# 2273| ValueCategory = prvalue
|
||||
# 2273| getQualifier(): [VariableAccess] s1
|
||||
# 2273| Type = [Struct] String
|
||||
# 2273| ValueCategory = lvalue
|
||||
# 2273| getElse(): [BlockStmt] { ... }
|
||||
# 2274| getStmt(0): [DeclStmt] declaration
|
||||
# 2274| getDeclarationEntry(0): [VariableDeclarationEntry] definition of s2
|
||||
# 2274| Type = [Struct] String
|
||||
# 2274| getVariable().getInitializer(): [Initializer] initializer for s2
|
||||
# 2274| getExpr(): [ConstructorCall] call to String
|
||||
# 2274| Type = [VoidType] void
|
||||
# 2274| ValueCategory = prvalue
|
||||
# 2275| getImplicitDestructorCall(0): [DestructorCall] call to ~String
|
||||
# 2275| Type = [VoidType] void
|
||||
# 2275| ValueCategory = prvalue
|
||||
# 2275| getQualifier(): [VariableAccess] s2
|
||||
# 2275| Type = [Struct] String
|
||||
# 2275| ValueCategory = lvalue
|
||||
# 2275| getImplicitDestructorCall(0): [DestructorCall] call to ~Bool
|
||||
# 2275| Type = [VoidType] void
|
||||
# 2275| ValueCategory = prvalue
|
||||
# 2275| getQualifier(): [VariableAccess] B
|
||||
# 2275| Type = [Class] Bool
|
||||
# 2275| ValueCategory = lvalue
|
||||
# 2276| getStmt(1): [ReturnStmt] return ...
|
||||
# 2278| [TopLevelFunction] void WhileLoopDestructors(bool)
|
||||
# 2278| <params>:
|
||||
# 2278| getParameter(0): [Parameter] b
|
||||
# 2278| Type = [BoolType] bool
|
||||
# 2278| getEntryPoint(): [BlockStmt] { ... }
|
||||
# 2279| getStmt(0): [BlockStmt] { ... }
|
||||
# 2280| getStmt(0): [DeclStmt] declaration
|
||||
# 2280| getDeclarationEntry(0): [VariableDeclarationEntry] definition of s
|
||||
# 2280| Type = [Struct] String
|
||||
# 2280| getVariable().getInitializer(): [Initializer] initializer for s
|
||||
# 2280| getExpr(): [ConstructorCall] call to String
|
||||
# 2280| Type = [VoidType] void
|
||||
# 2280| ValueCategory = prvalue
|
||||
# 2281| getStmt(1): [WhileStmt] while (...) ...
|
||||
# 2281| getCondition(): [VariableAccess] b
|
||||
# 2281| Type = [BoolType] bool
|
||||
# 2281| ValueCategory = prvalue(load)
|
||||
# 2281| getStmt(): [BlockStmt] { ... }
|
||||
# 2282| getStmt(0): [ExprStmt] ExprStmt
|
||||
# 2282| getExpr(): [AssignExpr] ... = ...
|
||||
# 2282| Type = [BoolType] bool
|
||||
# 2282| ValueCategory = lvalue
|
||||
# 2282| getLValue(): [VariableAccess] b
|
||||
# 2282| Type = [BoolType] bool
|
||||
# 2282| ValueCategory = lvalue
|
||||
# 2282| getRValue(): [Literal] 0
|
||||
# 2282| Type = [BoolType] bool
|
||||
# 2282| Value = [Literal] 0
|
||||
# 2282| ValueCategory = prvalue
|
||||
# 2284| getImplicitDestructorCall(0): [DestructorCall] call to ~String
|
||||
# 2284| Type = [VoidType] void
|
||||
# 2284| ValueCategory = prvalue
|
||||
# 2284| getQualifier(): [VariableAccess] s
|
||||
# 2284| Type = [Struct] String
|
||||
# 2284| ValueCategory = lvalue
|
||||
# 2286| getStmt(1): [BlockStmt] { ... }
|
||||
# 2287| getStmt(0): [WhileStmt] while (...) ...
|
||||
# 2287| getCondition(): [ConditionDeclExpr] (condition decl)
|
||||
# 2287| Type = [BoolType] bool
|
||||
# 2287| ValueCategory = prvalue
|
||||
# 2287| getChild(0): [FunctionCall] call to operator bool
|
||||
# 2287| Type = [BoolType] bool
|
||||
# 2287| ValueCategory = prvalue
|
||||
# 2287| getQualifier(): [VariableAccess] B
|
||||
# 2287| Type = [Class] Bool
|
||||
# 2287| ValueCategory = prvalue(load)
|
||||
# 2287| getStmt(): [BlockStmt] { ... }
|
||||
# 2288| getStmt(0): [ExprStmt] ExprStmt
|
||||
# 2288| getExpr(): [AssignExpr] ... = ...
|
||||
# 2288| Type = [BoolType] bool
|
||||
# 2288| ValueCategory = lvalue
|
||||
# 2288| getLValue(): [VariableAccess] b
|
||||
# 2288| Type = [BoolType] bool
|
||||
# 2288| ValueCategory = lvalue
|
||||
# 2288| getRValue(): [Literal] 0
|
||||
# 2288| Type = [BoolType] bool
|
||||
# 2288| Value = [Literal] 0
|
||||
# 2288| ValueCategory = prvalue
|
||||
# 2289| getImplicitDestructorCall(0): [DestructorCall] call to ~Bool
|
||||
# 2289| Type = [VoidType] void
|
||||
# 2289| ValueCategory = prvalue
|
||||
# 2289| getQualifier(): [VariableAccess] B
|
||||
# 2289| Type = [Class] Bool
|
||||
# 2289| ValueCategory = lvalue
|
||||
# 2289| getImplicitDestructorCall(0): [DestructorCall] call to ~Bool
|
||||
# 2289| Type = [VoidType] void
|
||||
# 2289| ValueCategory = prvalue
|
||||
# 2289| getQualifier(): [VariableAccess] B
|
||||
# 2289| Type = [Class] Bool
|
||||
# 2289| ValueCategory = lvalue
|
||||
# 2291| getStmt(2): [ReturnStmt] return ...
|
||||
# 2293| [TopLevelFunction] void VoidFunc()
|
||||
# 2293| <params>:
|
||||
# 2293| getEntryPoint(): [BlockStmt] { ... }
|
||||
# 2293| getStmt(0): [ReturnStmt] return ...
|
||||
# 2295| [TopLevelFunction] void IfReturnDestructors(bool)
|
||||
# 2295| <params>:
|
||||
# 2295| getParameter(0): [Parameter] b
|
||||
# 2295| Type = [BoolType] bool
|
||||
# 2295| getEntryPoint(): [BlockStmt] { ... }
|
||||
# 2296| getStmt(0): [DeclStmt] declaration
|
||||
# 2296| getDeclarationEntry(0): [VariableDeclarationEntry] definition of s
|
||||
# 2296| Type = [Struct] String
|
||||
# 2296| getVariable().getInitializer(): [Initializer] initializer for s
|
||||
# 2296| getExpr(): [ConstructorCall] call to String
|
||||
# 2296| Type = [VoidType] void
|
||||
# 2296| ValueCategory = prvalue
|
||||
# 2297| getStmt(1): [IfStmt] if (...) ...
|
||||
# 2297| getCondition(): [VariableAccess] b
|
||||
# 2297| Type = [BoolType] bool
|
||||
# 2297| ValueCategory = prvalue(load)
|
||||
# 2297| getThen(): [BlockStmt] { ... }
|
||||
# 2298| getStmt(0): [ReturnStmt] return ...
|
||||
# 2304| getImplicitDestructorCall(0): [DestructorCall] call to ~String
|
||||
# 2304| Type = [VoidType] void
|
||||
# 2304| ValueCategory = prvalue
|
||||
# 2304| getQualifier(): [VariableAccess] s
|
||||
# 2304| Type = [Struct] String
|
||||
# 2304| ValueCategory = lvalue
|
||||
# 2300| getStmt(2): [IfStmt] if (...) ...
|
||||
# 2300| getCondition(): [VariableAccess] b
|
||||
# 2300| Type = [BoolType] bool
|
||||
# 2300| ValueCategory = prvalue(load)
|
||||
# 2300| getThen(): [BlockStmt] { ... }
|
||||
# 2301| getStmt(0): [ReturnStmt] return ...
|
||||
# 2301| getExpr(): [FunctionCall] call to VoidFunc
|
||||
# 2301| Type = [VoidType] void
|
||||
# 2301| ValueCategory = prvalue
|
||||
# 2304| getImplicitDestructorCall(0): [DestructorCall] call to ~String
|
||||
# 2304| Type = [VoidType] void
|
||||
# 2304| ValueCategory = prvalue
|
||||
# 2304| getQualifier(): [VariableAccess] s
|
||||
# 2304| Type = [Struct] String
|
||||
# 2304| ValueCategory = lvalue
|
||||
# 2303| getStmt(3): [ExprStmt] ExprStmt
|
||||
# 2303| getExpr(): [VariableAccess] s
|
||||
# 2303| Type = [Struct] String
|
||||
# 2303| ValueCategory = lvalue
|
||||
# 2304| getStmt(4): [ReturnStmt] return ...
|
||||
# 2304| getImplicitDestructorCall(0): [DestructorCall] call to ~String
|
||||
# 2304| Type = [VoidType] void
|
||||
# 2304| ValueCategory = prvalue
|
||||
# 2304| getQualifier(): [VariableAccess] s
|
||||
# 2304| Type = [Struct] String
|
||||
# 2304| ValueCategory = lvalue
|
||||
# 2306| [TopLevelFunction] int IfReturnDestructors3(bool)
|
||||
# 2306| <params>:
|
||||
# 2306| getParameter(0): [Parameter] b
|
||||
# 2306| Type = [BoolType] bool
|
||||
# 2306| getEntryPoint(): [BlockStmt] { ... }
|
||||
# 2307| getStmt(0): [DeclStmt] declaration
|
||||
# 2307| getDeclarationEntry(0): [VariableDeclarationEntry] definition of s
|
||||
# 2307| Type = [Struct] String
|
||||
# 2307| getVariable().getInitializer(): [Initializer] initializer for s
|
||||
# 2307| getExpr(): [ConstructorCall] call to String
|
||||
# 2307| Type = [VoidType] void
|
||||
# 2307| ValueCategory = prvalue
|
||||
# 2308| getStmt(1): [IfStmt] if (...) ...
|
||||
# 2308| getCondition(): [VariableAccess] b
|
||||
# 2308| Type = [BoolType] bool
|
||||
# 2308| ValueCategory = prvalue(load)
|
||||
# 2308| getThen(): [BlockStmt] { ... }
|
||||
# 2309| getStmt(0): [ReturnStmt] return ...
|
||||
# 2309| getExpr(): [Literal] 1
|
||||
# 2309| Type = [IntType] int
|
||||
# 2309| Value = [Literal] 1
|
||||
# 2309| ValueCategory = prvalue
|
||||
# 2312| getImplicitDestructorCall(0): [DestructorCall] call to ~String
|
||||
# 2312| Type = [VoidType] void
|
||||
# 2312| ValueCategory = prvalue
|
||||
# 2312| getQualifier(): [VariableAccess] s
|
||||
# 2312| Type = [Struct] String
|
||||
# 2312| ValueCategory = lvalue
|
||||
# 2311| getStmt(2): [ReturnStmt] return ...
|
||||
# 2311| getExpr(): [Literal] 0
|
||||
# 2311| Type = [IntType] int
|
||||
# 2311| Value = [Literal] 0
|
||||
# 2311| ValueCategory = prvalue
|
||||
# 2312| getImplicitDestructorCall(0): [DestructorCall] call to ~String
|
||||
# 2312| Type = [VoidType] void
|
||||
# 2312| ValueCategory = prvalue
|
||||
# 2312| getQualifier(): [VariableAccess] s
|
||||
# 2312| Type = [Struct] String
|
||||
# 2312| ValueCategory = lvalue
|
||||
# 2314| [TopLevelFunction] void VoidReturnDestructors()
|
||||
# 2314| <params>:
|
||||
# 2314| getEntryPoint(): [BlockStmt] { ... }
|
||||
# 2315| getStmt(0): [DeclStmt] declaration
|
||||
# 2315| getDeclarationEntry(0): [VariableDeclarationEntry] definition of s
|
||||
# 2315| Type = [Struct] String
|
||||
# 2315| getVariable().getInitializer(): [Initializer] initializer for s
|
||||
# 2315| getExpr(): [ConstructorCall] call to String
|
||||
# 2315| Type = [VoidType] void
|
||||
# 2315| ValueCategory = prvalue
|
||||
# 2316| getStmt(1): [ReturnStmt] return ...
|
||||
# 2316| getExpr(): [FunctionCall] call to VoidFunc
|
||||
# 2316| Type = [VoidType] void
|
||||
# 2316| ValueCategory = prvalue
|
||||
# 2317| getImplicitDestructorCall(0): [DestructorCall] call to ~String
|
||||
# 2317| Type = [VoidType] void
|
||||
# 2317| ValueCategory = prvalue
|
||||
# 2317| getQualifier(): [VariableAccess] s
|
||||
# 2317| Type = [Struct] String
|
||||
# 2317| ValueCategory = lvalue
|
||||
perf-regression.cpp:
|
||||
# 4| [CopyAssignmentOperator] Big& Big::operator=(Big const&)
|
||||
# 4| <params>:
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -605,7 +605,7 @@ struct String {
|
||||
String& operator=(String&&);
|
||||
|
||||
const char* c_str() const;
|
||||
|
||||
char pop_back();
|
||||
private:
|
||||
const char* p;
|
||||
};
|
||||
@@ -2209,4 +2209,111 @@ namespace vacuous_destructor_call {
|
||||
}
|
||||
}
|
||||
|
||||
void TryCatchDestructors(bool b) {
|
||||
try {
|
||||
String s;
|
||||
if (b) {
|
||||
throw "string literal";
|
||||
}
|
||||
String s2;
|
||||
}
|
||||
catch (const char* s) {
|
||||
throw String(s);
|
||||
}
|
||||
catch (const String& e) {
|
||||
}
|
||||
catch (...) {
|
||||
throw;
|
||||
}
|
||||
}
|
||||
|
||||
void IfDestructors(bool b) {
|
||||
String s1;
|
||||
if(b) {
|
||||
String s2;
|
||||
} else {
|
||||
String s3;
|
||||
}
|
||||
String s4;
|
||||
}
|
||||
|
||||
void ForDestructors() {
|
||||
char c = 'a';
|
||||
for(String s("hello"); c != 0; c = s.pop_back()) {
|
||||
String s2;
|
||||
}
|
||||
|
||||
for(String s : vector<String>(String("hello"))) {
|
||||
String s2;
|
||||
}
|
||||
|
||||
for(String s("hello"), s2("world"); c != 0; c = s.pop_back()) {
|
||||
c = 0;
|
||||
}
|
||||
}
|
||||
|
||||
void IfDestructors2(bool b) {
|
||||
if(String s = String("hello"); b) {
|
||||
int x = 0;
|
||||
} else {
|
||||
int y = 0;
|
||||
}
|
||||
}
|
||||
|
||||
class Bool {
|
||||
public:
|
||||
Bool(bool b_);
|
||||
operator bool();
|
||||
~Bool();
|
||||
};
|
||||
|
||||
void IfDestructors3(bool b) {
|
||||
if(Bool B = Bool(b)) {
|
||||
String s1;
|
||||
} else {
|
||||
String s2;
|
||||
}
|
||||
}
|
||||
|
||||
void WhileLoopDestructors(bool b) {
|
||||
{
|
||||
String s;
|
||||
while(b) {
|
||||
b = false;
|
||||
}
|
||||
}
|
||||
|
||||
{
|
||||
while (Bool B = Bool(b)) {
|
||||
b = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void VoidFunc() {}
|
||||
|
||||
void IfReturnDestructors(bool b) {
|
||||
String s;
|
||||
if(b) {
|
||||
return;
|
||||
}
|
||||
if(b) {
|
||||
return VoidFunc();
|
||||
}
|
||||
s;
|
||||
}
|
||||
|
||||
int IfReturnDestructors3(bool b) {
|
||||
String s;
|
||||
if(b) {
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
void VoidReturnDestructors() {
|
||||
String s;
|
||||
return VoidFunc();
|
||||
}
|
||||
|
||||
// semmle-extractor-options: -std=c++20 --clang
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -1,2 +1,2 @@
|
||||
failures
|
||||
testFailures
|
||||
failures
|
||||
|
||||
@@ -9,6 +9,7 @@ sideEffectWithoutPrimary
|
||||
instructionWithoutSuccessor
|
||||
| ms_try_mix.cpp:35:13:35:19 | ThrowValue: throw ... | Instruction 'ThrowValue: throw ...' has no successors in function '$@'. | ms_try_mix.cpp:29:6:29:19 | void ms_finally_mix(int) | void ms_finally_mix(int) |
|
||||
| ms_try_mix.cpp:53:5:53:11 | ThrowValue: throw ... | Instruction 'ThrowValue: throw ...' has no successors in function '$@'. | ms_try_mix.cpp:49:6:49:28 | void ms_empty_finally_at_end() | void ms_empty_finally_at_end() |
|
||||
| statements.cpp:25:5:25:9 | ReThrow: re-throw exception | Instruction 'ReThrow: re-throw exception ' has no successors in function '$@'. | statements.cpp:21:6:21:16 | void early_throw(int) | void early_throw(int) |
|
||||
| stmt_expr.cpp:27:5:27:15 | Store: ... = ... | Instruction 'Store: ... = ...' has no successors in function '$@'. | stmt_expr.cpp:21:13:21:13 | void stmtexpr::g(int) | void stmtexpr::g(int) |
|
||||
ambiguousSuccessors
|
||||
unexplainedLoop
|
||||
|
||||
@@ -10,6 +10,9 @@ sideEffectWithoutPrimary
|
||||
instructionWithoutSuccessor
|
||||
| ms_try_mix.cpp:35:13:35:19 | ThrowValue: throw ... | Instruction 'ThrowValue: throw ...' has no successors in function '$@'. | ms_try_mix.cpp:29:6:29:19 | void ms_finally_mix(int) | void ms_finally_mix(int) |
|
||||
| ms_try_mix.cpp:53:5:53:11 | ThrowValue: throw ... | Instruction 'ThrowValue: throw ...' has no successors in function '$@'. | ms_try_mix.cpp:49:6:49:28 | void ms_empty_finally_at_end() | void ms_empty_finally_at_end() |
|
||||
| statements.cpp:25:5:25:9 | ReThrow: re-throw exception | Instruction 'ReThrow: re-throw exception ' has no successors in function '$@'. | statements.cpp:21:6:21:16 | void early_throw(int) | void early_throw(int) |
|
||||
| statements.cpp:26:3:26:3 | IndirectMayWriteSideEffect: inner | Instruction 'IndirectMayWriteSideEffect: inner' has no successors in function '$@'. | statements.cpp:21:6:21:16 | void early_throw(int) | void early_throw(int) |
|
||||
| statements.cpp:28:1:28:1 | IndirectMayWriteSideEffect: before | Instruction 'IndirectMayWriteSideEffect: before' has no successors in function '$@'. | statements.cpp:21:6:21:16 | void early_throw(int) | void early_throw(int) |
|
||||
| stmt_expr.cpp:27:5:27:15 | Store: ... = ... | Instruction 'Store: ... = ...' has no successors in function '$@'. | stmt_expr.cpp:21:13:21:13 | void stmtexpr::g(int) | void stmtexpr::g(int) |
|
||||
| stmt_expr.cpp:29:11:32:11 | CopyValue: (statement expression) | Instruction 'CopyValue: (statement expression)' has no successors in function '$@'. | stmt_expr.cpp:21:13:21:13 | void stmtexpr::g(int) | void stmtexpr::g(int) |
|
||||
| stmt_in_type.cpp:5:53:5:53 | Constant: 1 | Instruction 'Constant: 1' has no successors in function '$@'. | stmt_in_type.cpp:2:6:2:12 | void cpp_fun() | void cpp_fun() |
|
||||
|
||||
@@ -9,6 +9,7 @@ sideEffectWithoutPrimary
|
||||
instructionWithoutSuccessor
|
||||
| ms_try_mix.cpp:35:13:35:19 | ThrowValue: throw ... | Instruction 'ThrowValue: throw ...' has no successors in function '$@'. | ms_try_mix.cpp:29:6:29:19 | void ms_finally_mix(int) | void ms_finally_mix(int) |
|
||||
| ms_try_mix.cpp:53:5:53:11 | ThrowValue: throw ... | Instruction 'ThrowValue: throw ...' has no successors in function '$@'. | ms_try_mix.cpp:49:6:49:28 | void ms_empty_finally_at_end() | void ms_empty_finally_at_end() |
|
||||
| statements.cpp:25:5:25:9 | ReThrow: re-throw exception | Instruction 'ReThrow: re-throw exception ' has no successors in function '$@'. | statements.cpp:21:6:21:16 | void early_throw(int) | void early_throw(int) |
|
||||
| stmt_expr.cpp:27:5:27:15 | Store: ... = ... | Instruction 'Store: ... = ...' has no successors in function '$@'. | stmt_expr.cpp:21:13:21:13 | void stmtexpr::g(int) | void stmtexpr::g(int) |
|
||||
ambiguousSuccessors
|
||||
unexplainedLoop
|
||||
|
||||
Reference in New Issue
Block a user