mirror of
https://github.com/github/codeql.git
synced 2026-04-25 16:55:19 +02:00
C++: Add an IR test.
This commit is contained in:
@@ -22734,6 +22734,25 @@ ir.cpp:
|
||||
# 2552| Type = [Class] ClassWithDestructor
|
||||
# 2552| ValueCategory = xvalue
|
||||
# 2553| getStmt(1): [ReturnStmt] return ...
|
||||
# 2555| [TopLevelFunction] void builtin_bitcast(unsigned long)
|
||||
# 2555| <params>:
|
||||
# 2555| getParameter(0): [Parameter] ul
|
||||
# 2555| Type = [LongType] unsigned long
|
||||
# 2555| getEntryPoint(): [BlockStmt] { ... }
|
||||
# 2556| getStmt(0): [DeclStmt] declaration
|
||||
# 2556| getDeclarationEntry(0): [VariableDeclarationEntry] definition of d
|
||||
# 2556| Type = [DoubleType] double
|
||||
# 2556| getVariable().getInitializer(): [Initializer] initializer for d
|
||||
# 2556| getExpr(): [BuiltInBitCast] __builtin_bit_cast
|
||||
# 2556| Type = [DoubleType] double
|
||||
# 2556| ValueCategory = prvalue
|
||||
# 2556| getChild(0): [TypeName] double
|
||||
# 2556| Type = [DoubleType] double
|
||||
# 2556| ValueCategory = prvalue
|
||||
# 2556| getChild(1): [VariableAccess] ul
|
||||
# 2556| Type = [LongType] unsigned long
|
||||
# 2556| ValueCategory = prvalue(load)
|
||||
# 2557| getStmt(1): [ReturnStmt] return ...
|
||||
perf-regression.cpp:
|
||||
# 4| [CopyAssignmentOperator] Big& Big::operator=(Big const&)
|
||||
# 4| <params>:
|
||||
|
||||
@@ -18351,6 +18351,22 @@ ir.cpp:
|
||||
# 2550| Block 2
|
||||
# 2550| v2550_10(void) = Unreached :
|
||||
|
||||
# 2555| void builtin_bitcast(unsigned long)
|
||||
# 2555| Block 0
|
||||
# 2555| v2555_1(void) = EnterFunction :
|
||||
# 2555| m2555_2(unknown) = AliasedDefinition :
|
||||
# 2555| m2555_3(unknown) = InitializeNonLocal :
|
||||
# 2555| m2555_4(unknown) = Chi : total:m2555_2, partial:m2555_3
|
||||
# 2555| r2555_5(glval<unsigned long>) = VariableAddress[ul] :
|
||||
# 2555| m2555_6(unsigned long) = InitializeParameter[ul] : &:r2555_5
|
||||
# 2556| r2556_1(glval<double>) = VariableAddress[d] :
|
||||
# 2556| r2556_2(double) = BuiltIn[__builtin_bit_cast] :
|
||||
# 2556| m2556_3(double) = Store[d] : &:r2556_1, r2556_2
|
||||
# 2557| v2557_1(void) = NoOp :
|
||||
# 2555| v2555_7(void) = ReturnVoid :
|
||||
# 2555| v2555_8(void) = AliasedUse : m2555_3
|
||||
# 2555| v2555_9(void) = ExitFunction :
|
||||
|
||||
perf-regression.cpp:
|
||||
# 6| void Big::Big()
|
||||
# 6| Block 0
|
||||
|
||||
@@ -2552,4 +2552,8 @@ void constexpr_inconsistency(bool b) {
|
||||
;
|
||||
}
|
||||
|
||||
void builtin_bitcast(unsigned long ul) {
|
||||
double d = __builtin_bit_cast(double, ul);
|
||||
}
|
||||
|
||||
// semmle-extractor-options: -std=c++20 --clang
|
||||
|
||||
@@ -21,6 +21,7 @@ lostReachability
|
||||
backEdgeCountMismatch
|
||||
useNotDominatedByDefinition
|
||||
| ir.cpp:1535:8:1535:8 | Unary | Operand 'Unary' is not dominated by its definition in function '$@'. | ir.cpp:1535:8:1535:8 | void StructuredBindingDataMemberStruct::StructuredBindingDataMemberStruct() | void StructuredBindingDataMemberStruct::StructuredBindingDataMemberStruct() |
|
||||
| ir.cpp:2556:43:2556:44 | Arg(1) | Operand 'Arg(1)' is not dominated by its definition in function '$@'. | ir.cpp:2555:6:2555:20 | void builtin_bitcast(unsigned long) | void builtin_bitcast(unsigned long) |
|
||||
| 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) |
|
||||
|
||||
@@ -16693,6 +16693,29 @@ ir.cpp:
|
||||
# 2550| v2550_7(void) = AliasedUse : ~m?
|
||||
# 2550| v2550_8(void) = ExitFunction :
|
||||
|
||||
# 2555| void builtin_bitcast(unsigned long)
|
||||
# 2555| Block 0
|
||||
# 2555| v2555_1(void) = EnterFunction :
|
||||
# 2555| mu2555_2(unknown) = AliasedDefinition :
|
||||
# 2555| mu2555_3(unknown) = InitializeNonLocal :
|
||||
# 2555| r2555_4(glval<unsigned long>) = VariableAddress[ul] :
|
||||
# 2555| mu2555_5(unsigned long) = InitializeParameter[ul] : &:r2555_4
|
||||
# 2556| r2556_1(glval<double>) = VariableAddress[d] :
|
||||
#-----| Goto -> Block 1
|
||||
|
||||
# 2556| Block 1
|
||||
# 2556| r2556_2(double) = BuiltIn[__builtin_bit_cast] : 1:r2556_5
|
||||
# 2556| mu2556_3(double) = Store[d] : &:r2556_1, r2556_2
|
||||
# 2557| v2557_1(void) = NoOp :
|
||||
# 2555| v2555_6(void) = ReturnVoid :
|
||||
# 2555| v2555_7(void) = AliasedUse : ~m?
|
||||
# 2555| v2555_8(void) = ExitFunction :
|
||||
|
||||
# 2556| Block 2
|
||||
# 2556| r2556_4(glval<unsigned long>) = VariableAddress[ul] :
|
||||
# 2556| r2556_5(unsigned long) = Load[ul] : &:r2556_4, ~m?
|
||||
#-----| Goto -> Block 1
|
||||
|
||||
perf-regression.cpp:
|
||||
# 6| void Big::Big()
|
||||
# 6| Block 0
|
||||
|
||||
Reference in New Issue
Block a user