mirror of
https://github.com/github/codeql.git
synced 2026-04-26 01:05:15 +02:00
C++: Add test that show that PrintAST is broekn for OverloadedArrayExpr
This commit is contained in:
@@ -24086,6 +24086,38 @@ ir.cpp:
|
||||
# 2717| ValueCategory = prvalue
|
||||
# 2717| getThen(): [BlockStmt] { ... }
|
||||
# 2718| getStmt(16): [ReturnStmt] return ...
|
||||
# 2720| [CopyAssignmentOperator] WithBracketOperator& WithBracketOperator::operator=(WithBracketOperator const&)
|
||||
# 2720| <params>:
|
||||
#-----| getParameter(0): [Parameter] (unnamed parameter 0)
|
||||
#-----| Type = [LValueReferenceType] const WithBracketOperator &
|
||||
# 2720| [MoveAssignmentOperator] WithBracketOperator& WithBracketOperator::operator=(WithBracketOperator&&)
|
||||
# 2720| <params>:
|
||||
#-----| getParameter(0): [Parameter] (unnamed parameter 0)
|
||||
#-----| Type = [RValueReferenceType] WithBracketOperator &&
|
||||
# 2721| [ConstMemberFunction] char const& WithBracketOperator::operator[](int) const
|
||||
# 2721| <params>:
|
||||
# 2721| getParameter(0): [Parameter] pos
|
||||
# 2721| Type = [IntType] int
|
||||
# 2724| [TopLevelFunction] char UseBracketOperator(WithBracketOperator const, int)
|
||||
# 2724| <params>:
|
||||
# 2724| getParameter(0): [Parameter] line
|
||||
# 2724| Type = [SpecifiedType] const WithBracketOperator
|
||||
# 2724| getParameter(1): [Parameter] indent
|
||||
# 2724| Type = [IntType] int
|
||||
# 2724| getEntryPoint(): [BlockStmt] { ... }
|
||||
# 2725| getStmt(0): [ReturnStmt] return ...
|
||||
# 2725| getExpr(): [OverloadedArrayExpr] call to operator[]
|
||||
# 2725| Type = [LValueReferenceType] const char &
|
||||
# 2725| ValueCategory = prvalue
|
||||
# 2725| getArrayBase(): [VariableAccess] line
|
||||
# 2725| Type = [SpecifiedType] const WithBracketOperator
|
||||
# 2725| ValueCategory = lvalue
|
||||
# 2725| : [VariableAccess] indent
|
||||
# 2725| Type = [IntType] int
|
||||
# 2725| ValueCategory = prvalue(load)
|
||||
# 2725| getExpr().getFullyConverted(): [ReferenceDereferenceExpr] (reference dereference)
|
||||
# 2725| Type = [PlainCharType] char
|
||||
# 2725| ValueCategory = prvalue(load)
|
||||
many-defs-per-use.cpp:
|
||||
# 34| [TopLevelFunction] void many_defs_per_use()
|
||||
# 34| <params>:
|
||||
|
||||
@@ -19713,6 +19713,33 @@ ir.cpp:
|
||||
# 2698| v2698_10(void) = AliasedUse : m2698_3
|
||||
# 2698| v2698_11(void) = ExitFunction :
|
||||
|
||||
# 2724| char UseBracketOperator(WithBracketOperator const, int)
|
||||
# 2724| Block 0
|
||||
# 2724| v2724_1(void) = EnterFunction :
|
||||
# 2724| m2724_2(unknown) = AliasedDefinition :
|
||||
# 2724| m2724_3(unknown) = InitializeNonLocal :
|
||||
# 2724| m2724_4(unknown) = Chi : total:m2724_2, partial:m2724_3
|
||||
# 2724| r2724_5(glval<WithBracketOperator>) = VariableAddress[line] :
|
||||
# 2724| m2724_6(WithBracketOperator) = InitializeParameter[line] : &:r2724_5
|
||||
# 2724| m2724_7(unknown) = Chi : total:m2724_4, partial:m2724_6
|
||||
# 2724| r2724_8(glval<int>) = VariableAddress[indent] :
|
||||
# 2724| m2724_9(int) = InitializeParameter[indent] : &:r2724_8
|
||||
# 2725| r2725_1(glval<char>) = VariableAddress[#return] :
|
||||
# 2725| r2725_2(glval<WithBracketOperator>) = VariableAddress[line] :
|
||||
# 2725| r2725_3(glval<unknown>) = FunctionAddress[operator[]] :
|
||||
# 2725| r2725_4(glval<int>) = VariableAddress[indent] :
|
||||
# 2725| r2725_5(int) = Load[indent] : &:r2725_4, m2724_9
|
||||
# 2725| r2725_6(char &) = Call[operator[]] : func:r2725_3, this:r2725_2, 0:r2725_5
|
||||
# 2725| m2725_7(unknown) = ^CallSideEffect : ~m2724_7
|
||||
# 2725| m2725_8(unknown) = Chi : total:m2724_7, partial:m2725_7
|
||||
# 2725| v2725_9(void) = ^IndirectReadSideEffect[-1] : &:r2725_2, ~m2725_8
|
||||
# 2725| r2725_10(char) = Load[?] : &:r2725_6, ~m2725_8
|
||||
# 2725| m2725_11(char) = Store[#return] : &:r2725_1, r2725_10
|
||||
# 2724| r2724_10(glval<char>) = VariableAddress[#return] :
|
||||
# 2724| v2724_11(void) = ReturnValue : &:r2724_10, m2725_11
|
||||
# 2724| v2724_12(void) = AliasedUse : ~m2725_8
|
||||
# 2724| v2724_13(void) = ExitFunction :
|
||||
|
||||
many-defs-per-use.cpp:
|
||||
# 34| void many_defs_per_use()
|
||||
# 34| Block 0
|
||||
|
||||
@@ -2717,4 +2717,12 @@ void branch_on_integral_in_cpp(int x1, int x2) {
|
||||
if(!x_1_and_2) {}
|
||||
}
|
||||
|
||||
struct WithBracketOperator {
|
||||
const char& operator[](int pos) const;
|
||||
};
|
||||
|
||||
char UseBracketOperator(const WithBracketOperator line, int indent) {
|
||||
return line[indent];
|
||||
}
|
||||
|
||||
// semmle-extractor-options: -std=c++20 --clang
|
||||
|
||||
@@ -18031,6 +18031,30 @@ ir.cpp:
|
||||
# 2698| v2698_9(void) = AliasedUse : ~m?
|
||||
# 2698| v2698_10(void) = ExitFunction :
|
||||
|
||||
# 2724| char UseBracketOperator(WithBracketOperator const, int)
|
||||
# 2724| Block 0
|
||||
# 2724| v2724_1(void) = EnterFunction :
|
||||
# 2724| mu2724_2(unknown) = AliasedDefinition :
|
||||
# 2724| mu2724_3(unknown) = InitializeNonLocal :
|
||||
# 2724| r2724_4(glval<WithBracketOperator>) = VariableAddress[line] :
|
||||
# 2724| mu2724_5(WithBracketOperator) = InitializeParameter[line] : &:r2724_4
|
||||
# 2724| r2724_6(glval<int>) = VariableAddress[indent] :
|
||||
# 2724| mu2724_7(int) = InitializeParameter[indent] : &:r2724_6
|
||||
# 2725| r2725_1(glval<char>) = VariableAddress[#return] :
|
||||
# 2725| r2725_2(glval<WithBracketOperator>) = VariableAddress[line] :
|
||||
# 2725| r2725_3(glval<unknown>) = FunctionAddress[operator[]] :
|
||||
# 2725| r2725_4(glval<int>) = VariableAddress[indent] :
|
||||
# 2725| r2725_5(int) = Load[indent] : &:r2725_4, ~m?
|
||||
# 2725| r2725_6(char &) = Call[operator[]] : func:r2725_3, this:r2725_2, 0:r2725_5
|
||||
# 2725| mu2725_7(unknown) = ^CallSideEffect : ~m?
|
||||
# 2725| v2725_8(void) = ^IndirectReadSideEffect[-1] : &:r2725_2, ~m?
|
||||
# 2725| r2725_9(char) = Load[?] : &:r2725_6, ~m?
|
||||
# 2725| mu2725_10(char) = Store[#return] : &:r2725_1, r2725_9
|
||||
# 2724| r2724_8(glval<char>) = VariableAddress[#return] :
|
||||
# 2724| v2724_9(void) = ReturnValue : &:r2724_8, ~m?
|
||||
# 2724| v2724_10(void) = AliasedUse : ~m?
|
||||
# 2724| v2724_11(void) = ExitFunction :
|
||||
|
||||
many-defs-per-use.cpp:
|
||||
# 34| void many_defs_per_use()
|
||||
# 34| Block 0
|
||||
|
||||
Reference in New Issue
Block a user